2010-09-30 12 views
7

Istnieje typ ciągu znaków, w którym wyłączono przetwarzanie znaków literowych i wypisywano ciąg znaków w niezmienionej postaci. Co to za ciąg? symbol używany do prefiksowania ciągu znaków i możliwe użycie?znaki ucieczki

czy to \?

Odpowiedz

15

To znak @: @"c:\path"

nazywany jest verbatim string literal.

+0

dzięki chłopaki. Dałem wszystkim punkty, ale muszę wybrać najlepszą odpowiedź i to jest pierwsza odpowiedź. Jeszcze raz dziękuję za twoją pomoc. – Yves

+0

W takim przypadku @Kombucha, pamiętaj o zaznaczeniu tej opcji jako zaakceptowanej odpowiedzi. :) –

+0

Zrobiłem :) Musiałem poczekać 8 minut, zanim będę mógł "sprawdzić" znacznik wyboru. Właśnie zrobiłem :) – Yves

5

@

string sLiteral = @"This will be formatted. Even including 
return characters, 
    and spaces at the start of lines"; 
8

To się nazywa verbatim string literal i używa @ prefiks

bez prefiksu, to jeszcze ciąg dosłowne.. - jest to regularny ciąg literowy.

(Niektórzy ludzie błędnie myślą, że Określenie "string literal" odnosi się tylko do Verbatim literały ciągów znaków, ale to jest bardziej ogólne niż)

Verbatim literały łańcuchowe są użyteczne.

  • MultiLine ciągów
  • Strings, które naturalnie zawierają backslashy (takie jako ścieżki systemu Windows i wyrażenia regularne)

Należy pamiętać, że ten tylko ma znaczenie podczas kompilacji. Innymi słowy, te dwa zdania są dokładnie równoważne:

string x = "foo\\bar"; // Regular string literal 
string x = @"foo\bar"; // Verbatim string literal 

Verbatim literały łańcuchowe są nadal internowany w taki sam sposób jak zwykłe napisowych, nadal odnoszą się do przypadków System.String itp

Z sekcji 2.4 .4.5 o C# 4.0 specification:

regularny ciąg dosłownym składa się z zera lub więcej znaków zamkniętych w cudzysłowach, jak w „cześć” i może obejmować zarówno proste sekwencje (np jako \ t dla znaku tabulacji) oraz sekwencje specjalne szesnastkowe i Unicode.

Dosłowny ciąg literału składa się z znaku @, po którym następuje znak podwójnego cudzysłowu, zero lub więcej znaków oraz zamykający znak podwójnego cudzysłowu. Prostym przykładem jest @ "cześć". W dosłownym ciągu literowym znaki między ogranicznikami są interpretowane dosłownie, a jedynym wyjątkiem jest sekwencja-apostrof. W szczególności proste sekwencje specjalne, sekwencje specjalne w formacie heksadecymalnym i Unicode nie są przetwarzane w dosłownym ciągu literowym. Dosłowny ciąg literału może obejmować wiele wierszy.

Zauważ, że @ może być również stosowany jako przedrostek, co pozwala używać słów kluczowych jako identyfikatory:

int class = 10; // Invalid 
int @class = 10; // Valid 

To rzadko użyteczne, ale czasami mogą być wymagane, jeżeli masz używanie określony identyfikator. (The class kluczowe mogą być przydatne dla anonimowego właściwości typu w ASP.NET MVC, na przykład).

2

gdybym miał ciąg jako takiego: c: \ monkey.txt

i musiałby uciec ciąć tak:
string s = "c:\\monkey.txt"

zawiadomienie podwójny ukośnik

alternatywnie można użyć symbolu „@”, aby wskazać, że ciąg ma być brane dosłownie:
string s = @"c:\monkey.txt"