Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/21.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#world中,他不是一个真正的类型_C#_.net_Void - Fatal编程技术网

为什么空虚不是';在C#world中,他不是一个真正的类型

为什么空虚不是';在C#world中,他不是一个真正的类型,c#,.net,void,C#,.net,Void,我一直在用C语言编程,我脑子里都在想这个问题。 我看到了很多真正的理由,比如说,有真正的空虚类型 统一职能/行动 避免泛型/非泛型类型,如任务/任务 在调用dynamic env并指定结果时安全地使用void函数 但由于某些原因,它没有得到实施,我们需要解决缺点。我试图理解这个决定背后的逻辑。有一个很好的概述,回答也很公平,但他们用最新的MS语言F添加了Unit。看起来他们的观点随着时间的推移而改变。嗯,不,是系统。虚空是一种真正的类型。在.NET程序集的元数据中起着至关重要的作用,阻止您在

我一直在用C语言编程,我脑子里都在想这个问题。 我看到了很多真正的理由,比如说,有真正的空虚类型

  • 统一职能/行动
  • 避免泛型/非泛型类型,如任务/任务
  • 在调用dynamic env并指定结果时安全地使用void函数

但由于某些原因,它没有得到实施,我们需要解决缺点。我试图理解这个决定背后的逻辑。

有一个很好的概述,回答也很公平,但他们用最新的MS语言F添加了
Unit
。看起来他们的观点随着时间的推移而改变。嗯,不,是系统。虚空是一种真正的类型。在.NET程序集的元数据中起着至关重要的作用,阻止您在泛型中不适当地使用它,启用编译错误CS0673,并准确地告诉jitter在需要确定方法应该返回什么时应该做什么。没有什么。您从未创建过该类型的实例,这只是一个逻辑结果,因为从来没有创建过任何东西。@HansPassant-System.Void不是一个类型。。。您可以在官方文档中查看:void是否为“真实”类型是一个令人毛骨悚然的区别;很明显,这是一个非常奇怪的类型,无论它是否是“真实的”。空白的存在是因为C语言被设计成一种比机器语言更薄的抽象语言,用于速度慢、内存受限的机器;这是那个时代遗留下来的东西,我们现在被困在里面。对于现代机器、语言和体系结构来说,更好的设计是使用单个值(可能为null)使单元类型无效,从而在类型系统中实现更高的一致性,但我们现在有了向后兼容约束。