带有问号的好奇C#语法

时间:2010-01-15 06:31:26

标签: c#

private enum E_Week
{
   Mon = 0,
   Tue,
   . . .
}

以下代码是什么意思?

E_Week? week= null;

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

E_Week week= null;

3 个答案:

答案 0 :(得分:29)

您的代码使用的是nullable type。枚举(很像int或DateTime)就是所谓的“值类型”,它必须始终具有某些值。 Nullable类型允许您将值类型视为允许空值。

例如,此代码无效且无法编译,因为枚举不能为null:

E_Week week = null;

但是这段代码是有效的:

E_Week? week = null;

它与此完全相同:

Nullable<E_Week> week = null;

答案 1 :(得分:16)

E_Week?相当于Nullable<E_Week>

有关Nullable类型的详情,请参阅here

答案 2 :(得分:5)

最显着的区别是第二个陈述不起作用;)? sign基本上可以让你将值类型(在本例中为enum)设置为null,这通常是不可能的。