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

标签 c# .net generics types

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

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

public string GetTypeName<T>()
{
}

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

return typeof(T).Name

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

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

GetTypeName<int>()

它应该返回“int”。

如果有人这样调用函数:

GetTypeName<Int32>()

它应该返回“Int32”。

但我认为那是不可能的吧?

感谢您的回答!

最佳答案

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

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

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

关于c# - C# 中 typeof(int) 和 typeof(Int32) 之间的区别可能吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29709268/

相关文章:

.net - 如何向同事推广和/或销售 LINQ?

java - 关于 null 的 Comparable 和 Comparator 契约(Contract)

generics - 使用泛型的Scala异常签名定义

c# - config.Routes.MapHttpRoute 中 "name"和 "defaults"的用途

c# - MVC DAL 和 BLL 概念

c# - 加密 SQL 连接字符串

c# - ArrayList 与 C# 中的 List<>

c# - 如何使用 DI usinq autofac .net 框架注册 ILogger(Microsoft.Extensions.Logging)

C# 泛型 : What does IComparable<Nullable<T>> mean?

java - 如何创建通用数组?