C# 为什么void和System之间有区别
可能重复:C# 为什么void和System之间有区别,c#,void,C#,Void,可能重复: 我注意到不允许使用typeof(System.Void)。但是typeof(void)是允许的。 使用typeof(System.String)或typeof(String)时没有区别 为什么会这样?string是classSystem.string的别名 其他别名列表 对象:System.object 字符串:System.string 布尔:系统。布尔 byte:System.byte sbyte:System.sbyte 缩写:System.Int16 ushort:Sy
我注意到不允许使用
typeof(System.Void)
。但是typeof(void)
是允许的。
使用typeof(System.String)
或typeof(String)
时没有区别
为什么会这样?
string
是classSystem.string的别名
其他别名列表
- 对象:System.object
- 字符串:System.string
- 布尔:系统。布尔
- byte:System.byte
- sbyte:System.sbyte
- 缩写:System.Int16
- ushort:System.UInt16
- int:System.Int32
- uint:System.UInt32
- long:System.Int64
- ulong:System.UInt64
- 浮动:系统。单个
- 双人:系统,双人
- 十进制:系统。十进制
- char:System.char
多亏了。这是因为C#定义别名以保持原始C风格
NET Framework使用特定的命名约定:例如,它规定类名应以大写字母开头。因此,String
——它不是C#原生类型,而是在System
命名空间中定义的.NET类——实际上被称为System.String
,或者简称String
,如果您有使用系统代码>在您的文件中
C#将string
定义为System.string
的别名,这样代码就可以像在C和其他基于C的语言(C++,Java,…)中一样。我认为它更具可读性。同样地,int
与系统相同。Int32
void
与string
不同。在C#中使用void
的几乎所有情况下,编译器都会对其进行特殊处理,例如,在void
-“returning”方法中不需要return
语句,也不允许带有void
类型“value”表达式的return
语句typeof(void)
是少数将void
视为常规类型的情况之一。它是双向工作的:编译器可以假设任何不是void
的类型都不应该得到void
的特殊处理。允许使用其他方式拼写void
将使C#的解释更加复杂,而且没有理由需要它。请参阅