C# присваивают массив символов и массив символов для строкового представления?

        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.

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

12
задан Bopha 12 April 2010 в 17:49
поделиться

3 ответа

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

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

Создание новой строки с помощью str2 = new string (arrayChar); , однако, даст вам желаемое поведение.

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

27
ответ дан 2 December 2019 в 04:02
поделиться

Существует строковый конструктор , который принимает массив символов .

1
ответ дан 2 December 2019 в 04:02
поделиться
new string(arrayChar);
9
ответ дан 2 December 2019 в 04:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: