为什么在可以分配Null的类型时使用Nullable?

Ear*_*rlz 0 c# nullable

我正在使用一个库,并在使用我已经制作的函数时注意到一些奇怪的东西(我必须在哪里进行投射).

该库的功能定义如下

public DateTime? GetDate(){..}
Run Code Online (Sandbox Code Playgroud)

这有什么意义?为什么不让它成为常规DateTime并且null如果在获取日期时出现错误则正常返回?我错过了关于Nullable类型的重要内容吗?

Geo*_*uer 10

因为DateTime是.NET值类型.就像int和char一样,它不能为null