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 \?
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 \?
To znak @
: @"c:\path"
nazywany jest verbatim string literal.
W języku C# można użyć the @ sign to make a verbatim string literal.
Wszystko jednak \”są ignorowane
var literal = @"C:\Test\Test.txt
Newlines are also parsed";
@
string sLiteral = @"This will be formatted. Even including
return characters,
and spaces at the start of lines";
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.
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).
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"
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
W takim przypadku @Kombucha, pamiętaj o zaznaczeniu tej opcji jako zaakceptowanej odpowiedzi. :) –
Zrobiłem :) Musiałem poczekać 8 minut, zanim będę mógł "sprawdzić" znacznik wyboru. Właśnie zrobiłem :) – Yves