【发布时间】:2015-12-09 10:31:45
【问题描述】:
为什么typeof(string).FullName 给System.String 而不是string?所有其他“简单”类型也是如此,例如int、float、double、...
我知道typeof 正在返回给定类型的System.Type 对象,但为什么string 不是System.Type 对象?
是不是因为string是c#语言的一部分,而System.Type是系统库的一部分?
【问题讨论】:
-
这是因为
string是System.String类的别名,该类位于System命名空间中。如果你使用typeof(string).Name,你只会得到类名String。 -
除了上面 Tim Schmelter 的评论:对于原语也可以这样说:
typeof(int).FullName将返回int,但typeof(Int32).FullName将返回 @ 987654341@。 System.String和string完全相同,根据喜好使用。我个人将string用于字段,将String用于静态方法/常量,例如String.Empty或String.Format(...)。我一直认为它们在所有方面都完全相同,但显然它们的 type-FullName 也不同。所以感谢这个问题,因为现在我也学到了一些新东西。 :)