为什么私有变量定义上有问号?

Boo*_*ser 23 c# nullable

我正在阅读一篇关于MVVP模式的文章以及如何使用WPF实现它.在源代码中有多行,我无法弄清楚它中的问号是什么.

private DateTime? _value;
Run Code Online (Sandbox Code Playgroud)

?定义中的含义是什么?我试图在VS的帮助下找到它,但失败了.

Dav*_*ton 46

这是一个可以为空的价值.默认情况下,结构不能为空,它们必须具有值,因此在C#2.0中,Nullable<T>类型被引入.NET Framework.

C#Nullable<T>使用一段语法糖来实现类型,它在类型名称后面放置一个问号,从而使之前不可为空的类型可以为空.


Anv*_*aka 9

这意味着类型是Nullable.


Asa*_*sad 9

不能为空

DateTime                        
DateTime dt = null;   // Error: Cannot convert null to 'System.DateTime'
                         because it is a  non-nullable value type 
Run Code Online (Sandbox Code Playgroud)

可以为null

DateTime? / Nullable<DateTime>  
DateTime? dt = null;  // no problems
Run Code Online (Sandbox Code Playgroud)


Sve*_*lov 6

这是一个可空类型,您可以为其指定null