Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/290.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 既然类型已经可以赋值为Null,为什么要使用Null?_C#_Nullable - Fatal编程技术网

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一样,它不能为null

DateTime是一种值类型。不能为其分配null值

编辑:如果您尝试使用?运算符,则会出现以下错误:

类型“object”必须是不可为null的值类型,才能将其用作泛型类型或方法“System.nullable”中的参数“T”


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

不是所有类型都是引用类型。例如,你不能做像这样的事情

int x = null;

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

为什么不将其设为常规DateTime并返回null


DateTime不能为空。

DateTime不是.NET结构吗?意思是它是一种值类型?天哪。是的,你的权利。我很笨。。有人可以关闭这个,或者给我一个答案告诉我我很笨。是的,出于某种原因,我还没有发现DateTime是一种值类型。。我想我从来没有理由给DateTime赋值为Null。。