为什么c#中打印一个对象时,打印出来的是它的类型?

为什么C#中打印一个对象时,打印出来的是它的类型?

疑问:

如下代码:

int[] nums = { 1, 2, 3 };

Console.WriteLine(nums);

输出为:

System.Int32[] 

为什么?

此时是否调用了该对象的ToString()方法?

解释:

在C#中打印对象时,默认调用对象的 ToString() 方法。

但是,Array 没有覆盖 ToString() 方法,所以调用的是其基类 Object 的 ToString() 方法,该方法返回对象类型的全名:

public virtual String ToString()
{
    return GetType().ToString();
}