一个带有问号的好奇C#语法

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

以下代码是什么意思?

 E_Week? week= null; 

它是否等于以下代码? ‘?’的function是什么? 在这里签名?

 E_Week week= null; 

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

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

 E_Week week = null; 

但是这段代码是有效的:

 E_Week? week = null; 

它与此完全相同:

 Nullable week = null; 

E_Week? 相当于Nullable

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

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