当使用对象类型存储一个 int 值时,为什么 object.GetType() 返回 system.Int32?

Iva*_*ang 1 c#

代码如下:

object i = 11;

Console.WriteLine(i.GetType());
Run Code Online (Sandbox Code Playgroud)

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

Jon*_*eet 8

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

object x = "this is a string";
Console.WriteLine(x.GetType()); // Prints System.String
Run Code Online (Sandbox Code Playgroud)

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