为什么char数组在控制台中显示内容,而string和int数组在c#中不显示?

Moh*_*taz 2 c# arrays string int char

当我在int或字符串数​​组上运行Console.WriteLine()时,它将打印(System.String []),(System.Int32 [])。但是我用char数组执行此操作时,它显示的内容就好像它们是字符串一样。这种奇怪的行为是什么?(ihgfedcba)是它显示的内容。谁能解释为什么会这样?

public static void Test(){
        string[] words_array = new string[9];
        words_array[0] = "football";
        words_array[1] = "handball";
        words_array[2] = "Harry Potter";
        words_array[3] = "Prometheus";
        words_array[4] = "strengh";
        words_array[5] = "Muscles";
        words_array[6] = "weakness";
        words_array[7] = "beauty";
        words_array[8] = "Ali";
        System.Console.WriteLine(words_array);

        int[] int_array = new int[9];
        int_array[0] = 0;
        int_array[1] = 1;
        int_array[2] = 2;
        int_array[3] = 3;
        int_array[4] = 4;
        int_array[5] = 5;
        int_array[6] = 6;
        int_array[7] = 7;
        int_array[8] = 8;
        System.Console.WriteLine(int_array);

        char[] char_array = new char[9];
        char_array[0] = 'i';
        char_array[1] = 'h';
        char_array[2] = 'g';
        char_array[3] = 'f';
        char_array[4] = 'e';
        char_array[5] = 'd';
        char_array[6] = 'c';
        char_array[7] = 'b';
        char_array[8] = 'a';
        System.Console.WriteLine(char_array);           
    }
Run Code Online (Sandbox Code Playgroud)

can*_*on7 6

Console.WriteLine一个特定的重载需要一个char[]。最终将其传递给TextWriter.Write(char[]),将其写为字符串。

请参阅referencesource

如果您进行了足够深入的研究,文档将对此进行提示。

Console.WriteLine(char[])

将指定的Unicode字符数组(后跟当前的行终止符)写入标准输出流。

TextWriter.Write(char[], int, int)

此方法将从位置处的缓冲字符数组count向其中写入数据TextWriter字符index

此重载等效Write(Char[])于和()buffer之间每个字符的重载。indexindex + count

您可以char[]通过编写以下内容看到本身没有什么特别之处:

Console.WriteLine((object)char_array);  
Run Code Online (Sandbox Code Playgroud)

这将调用Console.WriteLine(object)重载,即print System.Char[]