我正在使用一个库,并在使用我已经制作的函数时注意到一些奇怪的东西(我必须在哪里进行投射)。
库有一个定义为
的函数public DateTime? GetDate(){..}
这有什么意义?如果获取日期时出现错误,为什么不正常DateTime
并正常返回null
?我错过了关于Nullable类型的重要内容吗?
答案 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不能为空。