Perhatikan bahwa new string(null)hasil String.Emptydan bukannull ! Jika ingin tetap null, Anda dapat membuat metode ekstensi static string ToStringSafe(this char[] buf) { return buf == null ? null : new string(buf); }.
Skod
8
@ Skod: Melihat bahwa tidak mungkin untuk ekspresi "baru" untuk mengembalikan nilai selain instance objek, yang seharusnya tidak mengejutkan siapa pun.
Matti Virkkunen
@MattiVirkkunen: Melempar pengecualian juga merupakan hal yang wajar untuk dilakukan. Itulah perilaku yang saya duga untuk melewatkan null ke konstruktor string.
Charles Taylor
81
Gunakan konstruktor string yang menerima karakter []
Andai saja Anda tiga menit lebih cepat, Anda akan menjawab sebelum pertanyaan diajukan!
DCastenholz
1
Lupakan menit. Hanya 17 detik. Jawaban saya tepat di atas adalah jawaban pilihan tertinggi saya yang kedua di situs. Sebenarnya saya ada di sini sekarang karena seseorang baru saja memilihnya, hampir 10 tahun kemudian. Dan kedua jawaban itu tidak benar-benar berbeda ... tetapi jawaban saya diposting 17 detik lebih cepat, dan itu berarti perbedaan 500 suara: /
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"
Saya pikir itulah yang saya cari. Tapi saya tidak tahu ada kelas bernama CharArray. Apakah Anda mungkin berarti sesuatu seperti:char[] charArray = new char[5] { 'a', 'b', 'c', '\0', '\0' }; string charsAsString = new string(charArray, 0, 3); // only want part of array.
Suncat2000
CharArray bukan kelas, hanya variabel tipe char []
Dilip Nannaware
13
Alternatif lain
char[] c ={'R','o','c','k','-','&','-','R','o','l','l'};string s =String.Concat( c );Debug.Assert( s.Equals("Rock-&-Roll"));
new string(null)
hasilString.Empty
dan bukannull
! Jika ingin tetapnull
, Anda dapat membuat metode ekstensistatic string ToStringSafe(this char[] buf) { return buf == null ? null : new string(buf); }
.Gunakan konstruktor string yang menerima karakter []
sumber
sumber
Satu cara lain:
sumber
string.Join
hanya menerimastring[]
alih-alihchar[]
string.Join<char>("_", chars)
bukannyastring.Join("_", chars)
sumber
Gunakan konstruktor string yang menerima chararray sebagai argumen, posisi awal dan panjang array. Sintaks diberikan di bawah ini:
sumber
char[] charArray = new char[5] { 'a', 'b', 'c', '\0', '\0' }; string charsAsString = new string(charArray, 0, 3); // only want part of array.
Alternatif lain
sumber