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