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, спасибо.
Вам нужно построить новую строку.
Выполнение arrayChar.ToString ()
вызывает метод ToString для типа char []
, который не перегружается для построения строки из символов, а для построения строка, указывающая, что тип является массивом символов. Это не приведет к желаемому поведению.
Создание новой строки с помощью str2 = new string (arrayChar);
, однако, даст вам желаемое поведение.
Проблема в том, что в C # (в отличие от C ++) строка не совпадает с массивом символов. Это два совершенно разных типа (даже если они могут представлять одни и те же данные). Строки могут быть пронумерованы как символы (String реализует IEnumerable
), но с точки зрения CLR это не тот же тип, что и символы. Для выполнения преобразования требуется код для преобразования между ними, и конструктор строк предоставляет этот механизм.
Существует строковый конструктор , который принимает массив символов .