代码如下:char[] det = { 'a', 'b', 'c', ' ', 'd', 'e', 'f', ' ' };
Console.WriteLine("{0}",det);//输出显示为 System.char[]char[] det = { 'a', 'b', 'c', ' ', 'd', 'e', 'f', ' ' };
Console.WriteLine(det);//正常显示。求解释~

解决方案 »

  1.   

    因为第一个det调用的是tostring方法,这个方法没有重写,所以显示类名第二个Console.WriteLine(det);,调用的是一个用char[] 类型作为参数的WriteLine方法重载,所以显示正常。
      

  2.   

    第二我明白了,第一个我还是有点没明白,我理解的是,是不是因为用了占位符,然后就把char[]类型转换成字符串,可是既然已经成功的转成字符串了,为啥还需要重写方法呢?writelin不是就可以直接打印了么?
    初学编程,希望能讲的稍微详细点
      

  3.   

    Console.WriteLine("{0}",det);
    WriteLine这个方法的重载就是会将除了第一个参数"{0}"以外的参数变成ToString。
      

  4.   


    哦~~~所以char[]没有被重写,直接显示他的类名了!
      

  5.   

    不是“char[]没有被重写”...所有数组都是继承自Array,Array不知道这些派生类要如何ToString,所以不重写...其他很多类很多方法也是这样,当不知道派生类如何实现虚方法时,都不重写...都是object的ToString方法...