代码如下:
object i = 11;
Console.WriteLine(i.GetType());
Run Code Online (Sandbox Code Playgroud)
它打印出“System.Int32”,为什么?我认为它应该是“system.object”。
GetType()返回值所引用的对象的实际类型。它不返回用于访问对象的变量的类型。所以作为一个更简单的例子:
object x = "this is a string";
Console.WriteLine(x.GetType()); // Prints System.String
Run Code Online (Sandbox Code Playgroud)
在这种情况下,类型是“装箱的System.Int32”——但大多数 .NET 不区分“常规值类型”和“等效于值类型的装箱类型”,包括GetType().