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 语句中非常有用