首页 > 解决方案 > 使用对象类型存储一个int值时,为什么object.GetType()返回system.Int32?

问题描述

如下代码:

object i = 11;

Console.WriteLine(i.GetType());

它打印出“System.Int32”,为什么?我认为它应该是“system.object”。

标签: c#

解决方案


GetType()返回值引用的对象的实际类型。它不返回用于访问对象的变量的类型。所以作为一个更简单的例子:

object x = "this is a string";
Console.WriteLine(x.GetType()); // Prints System.String

在这种情况下,类型是“装箱System.Int32” - 但大多数 .NET 不区分“常规值类型”和“与值类型等效的装箱类型”,包括GetType().


推荐阅读