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