C#中typeof(int)和typeof(Int32)之间的区别可能吗?

时间:2015-04-17 21:01:34

标签: c# .net generics types

有一个简单的问题,我想我知道答案,但我不想听 来自其他人。

我们说我会创建一个通用函数:

public string GetTypeName<T>()
{
}

它应该返回类型T的名称,这很容易:

return typeof(T).Name

此时我们可以忽略,这不适用于泛型类型,这不是问题的主题。

我的问题是:如果有人调用这样的功能:

GetTypeName<int>()

它应该返回&#34; int&#34;。

如果有人调用这样的功能:

GetTypeName<Int32>()

它应该返回&#34; Int32&#34;。

但我觉得那不可能吧?

感谢您的回答!

1 个答案:

答案 0 :(得分:6)

区别是不可能的,因为区别不存在。

int是一个关键字,编译器将其解释为global::System.Int32类型作为快捷方式或语法糖。换句话说,在运行时和.NET框架内部,没有int类型,只有Int32

这同样适用于所有具有关键字的类型 - 有关完整列表及其等价物,请参阅MSDN