2009-01-21 16 views
9

Czy istnieje sposób w C# sytax do definiowania nowej linii? (Tak jak w VB _)Jak umieścić nową linię w ciągu znaków w kodzie źródłowym C#?

przykład:

zamiast:

string myStr = "very long string" + 
"another long string"; 

to:

string myStr = "very long string \something 
another long string" 

OR; czy kompilator obsługuje to i robi coś takiego; "string" + "string" -> "stringstring" w tym przykładzie?

Różne przypadki są mile widziane jak wtedy, gdy te struny są stałymi itp

Odpowiedz

22

kompilator zamienia „ABC” + „DEF” na „ABCDEF” nie ma więc koszt w użyciu +

+0

To wydaje się interesujące, więc kiedy znamy cały ciąg znaków, nie ma potrzeby używania StringBuilder? jak sb.Append ("long str"); sb.Append ("long str"); Zamiast tego po prostu napisz "long str" + "long str" OR @ "long str ..." – erdogany

+0

erdogany: dokładnie. Również "ten" + 1 + "ciąg" jest konwertowany na "ten 1 ciąg" podczas kompilacji. –

+0

@DrJokepu: jesteś tego pewien? – M4N

19

Można użyć

string myStr = @"very long string 
another long string"; 

@”jest początkiem łańcucha dosłowny i ten rodzaj sznurka nie kończy się, dopóki następna "postać została znaleziona.

Nie ma dokładnej składni dla C#, która robi to samo co _ znak w vb. Jeśli więc chcesz uniknąć dodawania nowej linii, musisz ręcznie połączyć łańcuchy w różnych liniach.

+0

Zgadza się, ale musisz uważać, aby nie wciskać drugiej linii. W przeciwnym razie białe znaki (spacje lub tabulatory) będą częścią wynikowego łańcucha znaków. – M4N

+2

Och, a znak nowego znaku będzie również częścią wynikowego ciągu znaków. – M4N

+0

"Och, a znak nowej linii będzie również częścią wynikowego ciągu znaków", tak, to nie jest miłe. Dla mojego przypadku nie jest to wielka sprawa, jest ok, ale to nie może zrobić tak jak _ w VB. – erdogany

-3

StringBuilder powinny być stosowane wszędzie tam, gdzie to możliwe do łączenia ciągów jak to działa szybciej niż po prostu za pomocą „to” + " że".

+0

StringBuilder jest przesadą dla ustalonej lub znanej małej liczby konkatenacji ciągów. –

3

Wierzę, że to, czego szukasz, to znak kontynuacji linii C#.

Przestań patrzeć. Nie ma żadnego. W języku C# linia kończy się, gdy średnik ";" został osiągnięty.

Tak więc, jak wspominali inni, jeśli chcesz podzielić zadanie na łańcuchy, po prostu użyj znaku "+".


namespace Jaberwocky 
{ 
    class Program 
    { 
     public static void Main(string[] args) 
     { 
      string s = "Hello World! " + 
       "This is a long string " + 
       "That continues on and " + 
       "on and on and on."; 
      Console.WriteLine(s); 
      Console.ReadKey(true); 
     } 
    } 
} 
Powiązane problemy