为什么typeof(string).FullName
提供System.String
而不是string
?所有其他“简单”类型也是如此,例如int
,float
,double
,...
我了解typeof
正在返回给定类型的System.Type
对象,但为什么string
也不是System.Type
个对象?
是因为string
是c#语言的一部分,System.Type
是系统库的一部分吗?
答案 0 :(得分:11)
因为string
是System.String
的别名。您的string
C#代码在编译时转换为System.String
。这与other aliases相同。
答案 1 :(得分:1)
在C#中,string
只是System.String
的别名,因此两者都相同,typeof
返回相同的类型对象。
所有其他原始类型也是如此。例如,int
只是System.Int32
的别名。
如果您需要获取类型的较短C#别名,可以使用CSharpCodeProvider.GetTypeOutput()
代替FullName
:
using Microsoft.CSharp;
[...]
var compiler = new CSharpCodeProvider();
var type = new CodeTypeReference(typeof(Int32));
Console.WriteLine(compiler.GetTypeOutput(type)); // Prints int
(取自this question的代码段)