Обратите внимание, что new string(null)дает String.Emptyи нетnull ! Если вы хотите сохранить null, вы можете сделать метод расширения static string ToStringSafe(this char[] buf) { return buf == null ? null : new string(buf); }.
Skod
8
@Skod: видя, что для «нового» выражения невозможно вернуть значение, отличное от экземпляра объекта, это никого не должно удивлять.
Матти Вирккунен
@MattiVirkkunen: Бросать исключение также разумно. Это поведение, которое я бы предположил для передачи null в конструктор строки.
Чарльз Тейлор
81
Используйте конструктор строки, который принимает символ []
Если бы только вы были на три минуты быстрее, вы бы ответили до того, как был задан вопрос!
DCastenholz
1
Забудь минуты. Это всего лишь 17 секунд. Мой ответ чуть выше - мой второй самый высоко оцененный ответ на сайте. На самом деле я здесь, потому что кто-то только что проголосовал снова, почти 10 лет спустя. И эти два ответа на самом деле ничем не отличаются ... но мой был опубликован на 17 секунд быстрее, и это означало разницу в 500 голосов: /
Джоэл Коухорн
35
char[] characters;...string s =newstring(characters);
char[] chars ={'a',' ','s','t','r','i','n','g'};string s =string.Join("", chars);//we get "a string"// or for fun:string s =string.Join("_", chars);//we get "a_ _s_t_r_i_n_g"
Я думаю, это то, что я искал. Но я не знал ни одного класса с именем CharArray. Возможно, вы char[] charArray = new char[5] { 'a', 'b', 'c', '\0', '\0' }; string charsAsString = new string(charArray, 0, 3); // only want part of array.
Suncat2000
CharArray - это не класс, а переменная типа char []
Dilip Nannaware
13
Еще одна альтернатива
char[] c ={'R','o','c','k','-','&','-','R','o','l','l'};string s =String.Concat( c );Debug.Assert( s.Equals("Rock-&-Roll"));
new string(null)
даетString.Empty
и нетnull
! Если вы хотите сохранитьnull
, вы можете сделать метод расширенияstatic string ToStringSafe(this char[] buf) { return buf == null ? null : new string(buf); }
.Используйте конструктор строки, который принимает символ []
источник
источник
Еще один способ:
источник
string.Join
принимает толькоstring[]
вместоchar[]
string.Join<char>("_", chars)
вместоstring.Join("_", chars)
источник
Используйте строковый конструктор, который принимает chararray в качестве аргумента, начальную позицию и длину массива. Синтаксис приведен ниже:
источник
char[] charArray = new char[5] { 'a', 'b', 'c', '\0', '\0' }; string charsAsString = new string(charArray, 0, 3); // only want part of array.
Еще одна альтернатива
источник