C# 既然类型已经可以赋值为Null,为什么要使用Null?
我目前正在使用一个库,在使用我已经创建的函数时,我注意到一些奇怪的事情,我必须在其中进行转换 该库有一个定义如下的函数C# 既然类型已经可以赋值为Null,为什么要使用Null?,c#,nullable,C#,Nullable,我目前正在使用一个库,在使用我已经创建的函数时,我注意到一些奇怪的事情,我必须在其中进行转换 该库有一个定义如下的函数 public DateTime? GetDate(){..} 这有什么意义?如果在获取日期时出现错误,为什么不将其设置为常规日期时间并像正常情况一样返回null?我是否遗漏了一些关于可空类型的重要信息 值类型不能为Null。可空且经常写入的日期时间?可以具有null值。对于所有值类型也是如此。如果希望变量包含有效整数或Null,则需要声明一个值类型Int32 不能有可为空的字
public DateTime? GetDate(){..}
这有什么意义?如果在获取日期时出现错误,为什么不将其设置为常规日期时间并像正常情况一样返回null?我是否遗漏了一些关于可空类型的重要信息 值类型不能为Null。可空且经常写入的日期时间?可以具有null值。对于所有值类型也是如此。如果希望变量包含有效整数或Null,则需要声明一个值类型Int32
不能有可为空的字符串。我之所以提到这一点,是因为尽管字符串是引用类型,但它们在许多方面的行为都类似于值类型;我一直有人试图声明为null。好吧,我承认。是我。因为DateTime是一种.NET值类型。与int和char一样,它不能为nullDateTime是一种值类型。不能为其分配null值 编辑:如果您尝试使用?运算符,则会出现以下错误: 类型“object”必须是不可为null的值类型,才能将其用作泛型类型或方法“System.nullable”中的参数“T”
是一个结构,因此是有效的null,因为它是值类型。但是你是对的,不能使引用类型为null,因为它们已经可以被赋值为null。不是所有类型都是引用类型。例如,你不能做像这样的事情
int x = null;
因为int是值类型。DateTime是值类型。为什么不将其设为常规DateTime并返回null
DateTime不能为空。DateTime不是.NET结构吗?意思是它是一种值类型?天哪。是的,你的权利。我很笨。。有人可以关闭这个,或者给我一个答案告诉我我很笨。是的,出于某种原因,我还没有发现DateTime是一种值类型。。我想我从来没有理由给DateTime赋值为Null。。