1

可能重复:
什么是 System.Void?
为什么不是 System.Void?

我注意到它是不允许使用的typeof(System.Void)。但是typeof(void)是允许的。当你使用typeof(System.String)typeof(string)没有区别。

为什么会这样?

4

3 回答 3

2

这是因为 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

于 2012-10-17T08:39:03.873 回答
1

void不像string。在 C# 中使用的几乎所有情况下,void编译器都会对其进行特殊处理,例如,不需要returnvoid-“returning” 方法中使用语句,并且不允许return使用具有“值”类型的表达式的语句void. 是真正被视为常规类型typeof(void)的少数情况之一。void它是双向的:编译器可以假设任何不void应该得到void特殊处理的类型。允许其他拼写void方式会使解释 C# 变得更加复杂,并且没有理由需要它。

于 2012-10-17T08:47:45.460 回答
0

string是 class 的别名System.String

其他别名列表

  • 对象:System.Object
  • 字符串:System.String
  • 布尔:System.Boolean
  • 字节:系统.字节
  • sbyte:System.SByte
  • 简称:System.Int16
  • ushort:System.UInt16
  • 诠释:System.Int32
  • 单位:System.UInt32
  • 长:System.Int64
  • ulong:System.UInt64
  • 浮动:System.Single
  • 双:System.Double
  • 十进制:System.Decimal
  • 字符:System.Char

感谢Jon Skeet

于 2012-10-17T08:35:52.737 回答