Zauważ, że new string(null)plony, String.Emptya nienull ! Jeśli chcesz zachować null, możesz wykonać metodę rozszerzenia static string ToStringSafe(this char[] buf) { return buf == null ? null : new string(buf); }.
Skod,
8
@ Skod: Widząc, że „nowe” wyrażenie nie może zwrócić wartości innej niż instancja obiektu, nie powinno to nikogo dziwić.
Matti Virkkunen,
@MattiVirkkunen: Zgłaszanie wyjątku jest również rozsądnym posunięciem. Takie zachowanie przypuszczałbym, gdy przekażę wartość null konstruktorowi łańcucha.
Charles Taylor
81
Użyj konstruktora ciągu znaków, który akceptuje char []
Gdybyś był tylko trzy minuty szybszy, odpowiedziałbyś na to, zanim pytanie zostanie zadane!
DCastenholz
1
Zapomnij o minutach. To tylko 17 sekund. Moja odpowiedź powyżej jest moją drugą najwyżej ocenioną odpowiedzią na stronie. W rzeczywistości jestem tu teraz, ponieważ ktoś właśnie głosował ponownie, prawie 10 lat później. I dwie odpowiedzi tak naprawdę nie są różne ... ale moja została opublikowana 17 sekund szybciej, a to oznaczało różnicę 500 głosów: /
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"
Myślę, że tego właśnie szukałem. Ale nie znałem żadnej klasy o nazwie CharArray. Czy miałeś na myśli coś takiego:char[] charArray = new char[5] { 'a', 'b', 'c', '\0', '\0' }; string charsAsString = new string(charArray, 0, 3); // only want part of array.
Suncat2000 17.04.19
CharArray nie jest klasą, tylko zmienna typu char []
Dilip Nannaware 17.04.19
13
Kolejna alternatywa
char[] c ={'R','o','c','k','-','&','-','R','o','l','l'};string s =String.Concat( c );Debug.Assert( s.Equals("Rock-&-Roll"));
new string(null)
plony,String.Empty
a nienull
! Jeśli chcesz zachowaćnull
, możesz wykonać metodę rozszerzeniastatic string ToStringSafe(this char[] buf) { return buf == null ? null : new string(buf); }
.Użyj konstruktora ciągu znaków, który akceptuje char []
źródło
źródło
Jeszcze jeden sposób:
źródło
string.Join
akceptuje tylkostring[]
zamiastchar[]
string.Join<char>("_", chars)
zamiaststring.Join("_", chars)
źródło
Użyj konstruktora ciągów, który przyjmuje argument chararray jako argument, pozycję początkową i długość tablicy. Składnia jest podana poniżej:
źródło
char[] charArray = new char[5] { 'a', 'b', 'c', '\0', '\0' }; string charsAsString = new string(charArray, 0, 3); // only want part of array.
Kolejna alternatywa
źródło