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