С# назначить массив char и char на строку?

        char character = 'c';
        string str = null;
        str = character.ToString();//this is ok

        char[] arrayChar = { 'a', 'b', 'c', 'd' };
        string str2 = null;
        str2 = string.Copy(arrayChar.ToString());//this is not ok
        str2 = arrayChar.ToString();//this is not ok.

Я пытаюсь преобразовать массив char в строку, но последние две попытки не работают. Другой источник, который я нашел, и они должны создать новый тип строки, но я не знаю почему. Может кто-нибудь дать мне небольшое объяснение, спасибо.

Ответ 1

Вам нужно построить новую строку.

Выполнение arrayChar.ToString() вызывает метод ToString для типа char[], который не перегружен для построения строки из символов, а скорее для построения строки, которая указывает, что тип представляет собой массив символов. Это не даст вам поведения, которое вы желаете.

Построение новой строки через str2 = new string(arrayChar);, тем не менее, даст вам поведение, которое вы желаете.

Проблема в том, что в С# (в отличие от С++) строка не совпадает с массивом символов. Это два совершенно разных типа (хотя они могут представлять эти же данные). Строки могут быть перечислены как символы (String реализует IEnumerable<Char>), но не относится к CLR того же типа, что и символы. Для преобразования требуется код для преобразования между двумя - и конструктор строк предоставляет этот механизм.

Ответ 2

new string(arrayChar);