带有问号的好奇C#语法

Car*_*Liu 24 c#

private enum E_Week
{
   Mon = 0,
   Tue,
   . . .
}
Run Code Online (Sandbox Code Playgroud)

以下代码是什么意思?

E_Week? week= null;
Run Code Online (Sandbox Code Playgroud)

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

E_Week week= null;
Run Code Online (Sandbox Code Playgroud)

Eil*_*lon 30

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

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

E_Week week = null;
Run Code Online (Sandbox Code Playgroud)

但是这段代码是有效的:

E_Week? week = null;
Run Code Online (Sandbox Code Playgroud)

它与此完全相同:

Nullable<E_Week> week = null;
Run Code Online (Sandbox Code Playgroud)


mis*_*tor 16

E_Week? 相当于 Nullable<E_Week>

有关类型的更多信息,请参见此处Nullable.


Tom*_*ana 5

最重要的区别是第二个陈述不起作用;)?sign基本上为您提供了将值类型(在本例中为枚举)设置为null的可能性,这通常是不可能的..