Beachten Sie, dass new string(null)Ausbeuten String.Emptyund nichtnull ! Wenn Sie behalten möchten, nullkönnen Sie eine Erweiterungsmethode erstellen static string ToStringSafe(this char[] buf) { return buf == null ? null : new string(buf); }.
Skod
8
@Skod: Da es für einen "neuen" Ausdruck unmöglich ist, einen anderen Wert als eine Objektinstanz zurückzugeben, sollte dies niemanden überraschen.
Matti Virkkunen
@MattiVirkkunen: Eine Ausnahme auszulösen ist auch eine vernünftige Sache. Das ist das Verhalten, das ich vermutet hätte, wenn ich null an den String-Konstruktor übergeben hätte.
Charles Taylor
81
Verwenden Sie den Konstruktor der Zeichenfolge, die ein Zeichen akzeptiert []
Wenn Sie nur drei Minuten schneller wären, hätten Sie geantwortet, bevor die Frage gestellt wurde!
DCastenholz
1
Minuten vergessen. Es sind nur 17 Sekunden. Meine Antwort direkt oben ist meine zweithöchste Antwort auf der Website. Tatsächlich bin ich jetzt hier, weil jemand es gerade wieder gewählt hat, fast 10 Jahre später. Und die beiden Antworten sind nicht wirklich unterschiedlich ... aber meine wurde 17 Sekunden schneller gepostet, und das bedeutet einen Unterschied von 500 Stimmen: /
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"
Ich denke, das habe ich gesucht. Aber ich kannte keine Klasse namens CharArray. char[] charArray = new char[5] { 'a', 'b', 'c', '\0', '\0' }; string charsAsString = new string(charArray, 0, 3); // only want part of array.
Meinten
CharArray ist keine Klasse, sondern nur eine Variable vom Typ char []
Dilip Nannaware
13
Eine andere Alternative
char[] c ={'R','o','c','k','-','&','-','R','o','l','l'};string s =String.Concat( c );Debug.Assert( s.Equals("Rock-&-Roll"));
new string(null)
AusbeutenString.Empty
und nichtnull
! Wenn Sie behalten möchten,null
können Sie eine Erweiterungsmethode erstellenstatic string ToStringSafe(this char[] buf) { return buf == null ? null : new string(buf); }
.Verwenden Sie den Konstruktor der Zeichenfolge, die ein Zeichen akzeptiert []
quelle
quelle
Ein anderer Weg:
quelle
string.Join
akzeptiert nurstring[]
anstelle vonchar[]
string.Join<char>("_", chars)
stattstring.Join("_", chars)
quelle
Verwenden Sie den String-Konstruktor, der Chararray als Argument, Startposition und Länge des Arrays akzeptiert. Die Syntax ist unten angegeben:
quelle
char[] charArray = new char[5] { 'a', 'b', 'c', '\0', '\0' }; string charsAsString = new string(charArray, 0, 3); // only want part of array.
Eine andere Alternative
quelle