微软在C#中加入了很多符号,比如“?”、“??”、“[]”(中括号)、“<>” (这个倒不是C#独有的)等等。下面分别对他们的使用方法进行说明。
本文目前尚不完整,根据程序中实际用到的情况会不断添加。
- 可空类型“?”
可空类型符号“?”加在原本不可为空的类型后面,所定义的类型变量便可以被赋以空值,比如:
public static void Main()
{
String str = null; // OK
int i = null; // CS0037 Cannot convert null to 'type'
// because it is a non-nullable value type
}
如果需要将i
定义为null
,则写成下面这种形式就可以了
int? i = null; // OK
此外还需要知道的一点是,使用“?”定义出来的可空变量,实际上是Nullable
结构体的一个实例。
- 空连接操作符“??”
微软形容C#的第一个词是“elegant”,为了做到elegant,微软可谓煞费苦心。在C中经常会有这些情况,比如有的变量只是用一次就不再用;再比如做滤波器的时候,第一次差分运算需要进行判断。这些额外的判断语句确实破坏了代码的整体美感。??就是为了这个目的诞生的。看下面这段代码:
static void Main()
{
// ?? operator example.
int? x = null;
// y = x, 当x == null时y = -1
int y = x ?? -1;
}
- 3.