2009-08-24 16 views
273

¿Cuál es la forma correcta de convertir un char[] en una cadena?.NET/C# - Convertir char [] en la cadena

El método ToString() de una serie de caracteres no soluciona el problema.

+0

Aquí está la respuesta https://stackoverflow.com/a/28143817/3926504 –

Respuesta

474
char[] chars = {'a', ' ', 's', 't', 'r', 'i', 'n', 'g'}; 
string s = new string(chars); 
+8

Tenga en cuenta que 'nueva cadena (nulo)' 'rendimientos de cuerdas .Empty' y ** not ** 'null'! Si desea mantener 'null', puede hacer un método de extensión' cadena estática ToStringSafe (este char [] buf) {return buf == null? null: nueva cadena (buf); } ' – Skod

+1

@Skod: Al ver que es imposible que una expresión "nueva" devuelva un valor que no sea una instancia de objeto, eso no debería sorprender a nadie. –

58

utilizar el constructor de la cadena que acepta un char []

char[] c = ...; 
string s = new string(c); 
+36

¡Si solo fueras tres minutos más rápido, hubieras respondido antes de que se hiciera la pregunta! – DCastenholz

28
char[] characters; 
... 
string s = new string(characters); 
17
String mystring = new String(mychararray); 
23

Una otra manera:

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" 
+0

'string.Join' solo acepta' string [] 'en lugar de' char [] ' – sky91

+0

@ sky91 no solo, puede usar String.Join Método y cualquier T [] como parámetro, se llamará T.ToString() –

+0

, entonces debe escribir 'string.Join (" _ ", chars)' en lugar de 'string.Join (" _ ", chars)' – sky91

9

utilizar el constructor cadena que acepta chararray como argumento, posición inicial y longitud de la matriz. La sintaxis es la siguiente:

string charToString = new string(CharArray, 0, CharArray.Count()); 
5

Otra alternativa

char[] c = { 'R', 'o', 'c', 'k', '-', '&', '-', 'R', 'o', 'l', 'l' }; 
string s = String.Concat(c); 

Debug.Assert(s.Equals("Rock-&-Roll"));