为什么'typeof(string).FullName'给'System.String'而不是'string'?

时间:2015-12-09 10:31:45

标签: c# types typeof

为什么typeof(string).FullName提供System.String而不是string?所有其他“简单”类型也是如此,例如intfloatdouble,...

我了解typeof正在返回给定类型的System.Type对象,但为什么string也不是System.Type个对象?

是因为string是c#语言的一部分,System.Type是系统库的一部分吗?

2 个答案:

答案 0 :(得分:11)

因为stringSystem.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的代码段)