我注意到它是不允许使用的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。