.NET / C # - char [] dönüştürmek için dize


407

Bir dönüş yapmak için uygun yol nedir char[]A'yı bir dizeye dönüştürmenin ?

ToString()Karakter bir diziden yöntem hile yapmaz.

Yanıtlar:


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

12
Not new string(null)verim String.Emptyve değil null ! Saklamak istiyorsanız null, bir uzantı yöntemi yapabilirsiniz static string ToStringSafe(this char[] buf) { return buf == null ? null : new string(buf); }.
Skod

8
@Skod: "Yeni" bir ifadenin, nesne örneği dışında bir değeri döndürmesinin imkansız olduğunu görmek, bu kimseye sürpriz olmamalıdır.
Matti Virkkunen

@MattiVirkkunen: İstisna atmak da makul bir şey. Dize yapıcısına null ilettiği için tahmin edebileceğim davranış budur.
Charles Taylor

81

Bir char [] kabul eden dize yapıcısını kullanın

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

54
Sadece üç dakika daha hızlı olsaydın, soru sorulmadan cevap verirdin!
DCastenholz

1
Dakikaları unutun. Sadece 17 saniye. Yukarıdaki cevabım, sitede en yüksek oyu alan 2. cevap. Aslında ben şimdi buradayım çünkü biri tekrar oy verdi, neredeyse 10 yıl sonra. Ve iki cevap gerçekten farklı değil ... ama benimki 17 saniye daha hızlı yayınlandı ve bu 500 oy farkı anlamına geliyordu: /
Joel Coehoorn


28

Başka bir yol:

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"

string.Joinstring[]yerine kabul ederchar[]
sky91

@ sky91 sadece, String.Join <T> Yöntemini ve herhangi bir T [] parametresini kullanabilirsiniz, T.ToString ()
Semen Miroshnichenko

1
o zaman yazmalısınız string.Join<char>("_", chars)yerinestring.Join("_", chars)
sky91

2
Derleyici zamanında derleme türü bilindiği için derleyici bunu otomatik olarak yapar.
Semen Miroshnichenko

Garip çünkü <char> türünü tanımlamazsam derleme hatası alıyorum
sky91


15

Diziyi argüman, başlangıç ​​konumu ve dizinin uzunluğu olarak kabul eden dize yapıcısını kullanın. Sözdizimi aşağıda verilmiştir:

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

Aradığım şey bu. Ama CharArray adında bir sınıf bilmiyordum. Belki de şöyle bir şey mi demek istediniz:char[] charArray = new char[5] { 'a', 'b', 'c', '\0', '\0' }; string charsAsString = new string(charArray, 0, 3); // only want part of array.
Suncat2000

CharArray sınıf değil, char [] türünde sadece değişken
Dilip Nannaware

13

Başka bir alternatif

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

Debug.Assert( s.Equals( "Rock-&-Roll" ) );
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.