运算符? 与 ??
1. Nullable<T> 泛型结构
可空类型:
对于一个类型,如果既可以给它分配一个值(value),也可以给它分配空引用(null),我们就说这个类型是可空的。
因此,可空类型可表示一个值,或表示不存在任何值。
例如,类似 String的引用类型就是可空类型,而类似 Int32 的值类型不是可空类型。
由于值类型的容量只够表示适合于该类型的值,因此它不可为空;值类型没有表示空值所需的额外容量。
Nullable 结构支持只将一个值类型用作可空类型,而引用类型本身就是可空的。
在C#中值类型(int、bool、float、double、struct、enum、and so on)是不能赋值null的,
而引用类型(string、class、interface、delegate、object、array)是可以的。
如果确实想在值域上加上null的话,Nullable就派上用场了。T?是Nullable<T>的语法糖。
string _String = null; object _object = null; //int _int = 0; or int _int; //为int赋值null int? _int = null; //==> Nullable<int> _int = null; if (!_int.HasValue) { _int = -1; } Console.WriteLine(_int);
2.?? 运算符
?? 运算符称为 null 合并运算符,用于定义可以为 null 值的类型和引用类型的默认值。
如果此运算符的左操作数不为 null,则此运算符将返回左操作数;否则返回右操作数。
A = A ?? B ; //如果A=null就返回B,如果A!=null就返回A,如果AB两个都是null,那就返回null
可看作:==> A = A == null ? A : B;
//string赋值 //string _string = null; string _string = "this string not null"; _string = _string ?? "this is a string"; Console.WriteLine(_string); //int赋值 int? _intX = null; int? _intY = _intX ?? -1; Console.WriteLine(_intY);
3.=> Lambda 运算符
Lambda 表达式,必须在 Lambda 运算符 =>(读作goes to) 左侧指定输入参数(如果有),然后在另一侧输入表达式或语句块。
namespace Lambda { class Program { delegate int del(int intput); static void Main(string[] args) { del myDelegate = x => (x * x); Console.WriteLine(myDelegate(8));//64 } } }
posted on 2014-02-11 18:08 Aidou_dream 阅读(385) 评论(0) 编辑 收藏 举报