Note que new string(null)produz String.Emptye nãonull ! Se você deseja manter null, você pode criar um método de extensão static string ToStringSafe(this char[] buf) { return buf == null ? null : new string(buf); }.
Skod
8
@ Skod: Como é impossível uma expressão "nova" retornar um valor que não seja uma instância de objeto, isso não deve surpreender ninguém.
Matti Virkkunen
@MattiVirkkunen: Lançar uma exceção também é uma coisa razoável a se fazer. Esse é o comportamento que eu teria adivinhado por passar nulo ao construtor de strings.
Charles Taylor
81
Use o construtor de string que aceita um caractere []
Se você fosse três minutos mais rápido, teria respondido antes que a pergunta fosse feita!
DCastenholz
1
Esqueça os minutos. São apenas 17 segundos. Minha resposta acima é a minha segunda resposta mais votada no site. Na verdade, estou aqui agora porque alguém acabou de votar novamente, quase 10 anos depois. E as duas respostas não são realmente diferente ... mas o meu foi postada 17 segundos mais rápido, e que significou uma diferença de 500 votação: /
Joel Coehoorn
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"
Eu acho que é isso que eu estava procurando. Mas eu não conhecia nenhuma classe chamada CharArray. Será que você talvez quer dizer algo como:char[] charArray = new char[5] { 'a', 'b', 'c', '\0', '\0' }; string charsAsString = new string(charArray, 0, 3); // only want part of array.
Suncat2000
CharArray não é classe, apenas variável do tipo char []
Dilip Nannaware 17/04/19
13
Outra alternativa
char[] c ={'R','o','c','k','-','&','-','R','o','l','l'};string s =String.Concat( c );Debug.Assert( s.Equals("Rock-&-Roll"));
new string(null)
produzString.Empty
e nãonull
! Se você deseja manternull
, você pode criar um método de extensãostatic string ToStringSafe(this char[] buf) { return buf == null ? null : new string(buf); }
.Use o construtor de string que aceita um caractere []
fonte
fonte
Uma outra maneira:
fonte
string.Join
só aceita emstring[]
vez dechar[]
string.Join<char>("_", chars)
em vez destring.Join("_", chars)
fonte
Use o construtor de strings que aceita chararray como argumento, posição inicial e comprimento da matriz. A sintaxe é fornecida abaixo:
fonte
char[] charArray = new char[5] { 'a', 'b', 'c', '\0', '\0' }; string charsAsString = new string(charArray, 0, 3); // only want part of array.
Outra alternativa
fonte