我注意到它是不允许使用的typeof(System.Void)。但是typeof(void)是允许的。当你使用typeof(System.String)或typeof(string)没有区别。
为什么会这样?
我注意到它是不允许使用的typeof(System.Void)。但是typeof(void)是允许的。当你使用typeof(System.String)或typeof(string)没有区别。
为什么会这样?
这是因为 C# 定义了别名以保持原始 C 风格。
.NET Framework 使用特定的命名约定:例如,它规定类名应以大写字母开头。因此,String-- 它不是 C# 本机类型,而是在命名空间中定义的 .NET 类System-- 实际上被称为System.String,或者String如果您using System;的文件中有 a ,则简称为 。
C# 定义string为 的别名,System.String以便代码看起来像在 C 和其他基于 C 的语言(C++、Java 等)中所做的那样。我认为它更具可读性。以相同的方式,int与 相同System.Int32。
void不像string。在 C# 中使用的几乎所有情况下,void编译器都会对其进行特殊处理,例如,不需要return在void-“returning” 方法中使用语句,并且不允许return使用具有“值”类型的表达式的语句void. 是真正被视为常规类型typeof(void)的少数情况之一。void它是双向的:编译器可以假设任何不void应该得到void特殊处理的类型。允许其他拼写void方式会使解释 C# 变得更加复杂,并且没有理由需要它。
string是 class 的别名System.String。
其他别名列表
感谢Jon Skeet。