C# 的一些语法特性

1.? -Nullable
C# 里像int,bool,double 这样的struct和enum类型都不能为null.如果确实想在值域上加上null的话,
Nullable就派上用场了.T?是Nullable<T> 的语法糖.要将T?转为T可以通过类型转换,或者通过T?的Value属性
例:

int? arg=-1;
if(arg.HasValue){
int value=arg.Value;
}

int?和int的区别就是int?可以赋值为null,但是int不可以

2.??
O ?? V 可以看作是O==null ? V:O 的语法糖.??运算符在左操作数非null时返回左操作数.否则返回右操作数

int? i=null;
return i ?? "True";

3.=> lambda 表达式

4.{} --initializer 初始化器
collection initializer (集合初始化器)使得初始化一个List,Dictionary变得简单了
例:

List<string> list = new List<string>{"watashi", "rejudge"};
Dictionary<string, string> dic = new Dictionary<string, string>
{
{"watashi", "watashi wa watashi"},
{"rejudge", "-rejudge -pia2dea4"}
};

对应的还有object initializer 对象初始化器

5.var -implicit type (隐式类型)
var 只是个在声明变量时代替实际的类型名的语法糖,只能使用在编译器能根据上下文推出其实际类型的地方,这在类型名称藏在好几层namespace或class里的时候,还有在foreach 语句中非常有用

posted @ 2014-04-16 10:48  阿磊ing  阅读(756)  评论(0编辑  收藏  举报