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

时间:2010-03-02 20:50:59

标签: c# nullable

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

库有一个定义为

的函数
public DateTime? GetDate(){..}

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

6 个答案:

答案 0 :(得分:10)

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

答案 1 :(得分:1)

DateTime是一种值类型。它不能赋值为null。

编辑:如果你试图使用?对引用类型的运算符,您会收到以下错误:

  

类型'object'必须是非可空值类型才能在泛型类型或方法'System.Nullable'中将其用作参数'T'

答案 2 :(得分:0)

值类型不能为空。 Nullable(通常是写DateTime?)的值可以为null。对于所有值类型也是如此。如果希望变量保存有效的Integer或Null,则需要声明值类型Int32?

您不能拥有Nullable字符串。我提到这一点是因为虽然字符串是引用类型,但它们在很多方面都像值类型一样;我一直都是人们试图宣布Nullable。 (好吧,我承认了。那是我。)

答案 3 :(得分:0)

DateTime是一个结构,因此是一个有效的可空,因为它是一个值类型。但是你是对的,不能使引用类型可以为空,因为它们已经被赋值为null。

答案 4 :(得分:0)

并非所有类型都是引用类型。例如,你不能做像

这样的事情
int x = null;

因为int是值类型。 DateTime是值类型。

答案 5 :(得分:0)

“为什么不让它成为常规DateTime并返回null”

DateTime不能为空。