【问题标题】:Differentiation between typeof(int) and typeof(Int32) in C# possible?C# 中 typeof(int) 和 typeof(Int32) 的区别可能吗?
【发布时间】:2015-04-17 21:01:34
【问题描述】:

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

假设我将创建一个通用函数:

public string GetTypeName<T>()
{
}

它应该返回类型 T 的名称,这很简单:

return typeof(T).Name

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

我的问题是:如果有人这样调用函数:

GetTypeName<int>()

它应该返回“int”。

如果有人这样调用函数:

GetTypeName<Int32>()

它应该返回“Int32”。

但我认为那不可能吧?

感谢您的回答!

【问题讨论】:

  • 没有任何区别。 int 只是 Int32 类型的 C# 别名,typeof 总是返回 Int32 而不是 int
  • 附带说明,问题第一部分中描述的函数编译得很好。 dotnetfiddle.net/TzCXuq

标签: c# .net generics types


【解决方案1】:

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

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

这同样适用于所有具有关键字的类型 - 请参阅 MSDN 以获取完整列表及其等效项

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-12-17
    • 2016-02-12
    • 1970-01-01
    • 2010-09-13
    • 2013-11-24
    • 1970-01-01
    • 1970-01-01
    • 2011-07-20
    相关资源
    最近更新 更多