2010-01-15 73 views
24
private enum E_Week 
{ 
    Mon = 0, 
    Tue, 
    . . . 
} 

下面的代码是什么意思?带问号的奇怪C#语法

E_Week? week= null; 

它是否等于以下代码? ''是什么功能?在这里签名?

E_Week week= null; 
+3

可能重复[什么是“DateTime?”在C#中是什么意思?](http://stackoverflow.com/questions/109859/what-does-datetime-mean-in-c) – 2010-05-24 14:57:12

回答

29

您的代码使用的是所谓的nullable type。枚举类似int或DateTime,就是所谓的“值类型”,它总是需要一些值。可空类型允许您将值类型视为它们允许空值。

例如,下面的代码是无效的,并不能编译,因为枚举不能为空:

E_Week week = null; 

但是这个代码是有效的:

E_Week? week = null; 

而且它是完全一样的:

Nullable<E_Week> week = null; 
16

E_Week?相当于Nullable<E_Week>

here的更多信息,Nullable类型。

5

最重要的区别是第二条语句不起作用;)?标志基本上给你的值类型(在这种情况下枚举)设置为null,这通常是不可能的可能性..