Szukaj…


Składnia

  • \ '- pojedynczy cytat (0x0027)
  • \ "- podwójny cytat (0x0022)
  • \\ - ukośnik odwrotny (0x005C)
  • \ 0 - null (0x0000)
  • \ a - alert (0x0007)
  • \ b - backspace (0x0008)
  • \ f - wysuw strony (0x000C)
  • \ n - nowa linia (0x000A)
  • \ r - powrót karetki (0x000D)
  • \ t - zakładka pozioma (0x0009)
  • \ v - zakładka pionowa (0x000B)
  • \ u0000 - \ uFFFF - Znak Unicode
  • \ x0 - \ xFFFF - znak Unicode (kod o zmiennej długości)
  • \ U00000000 - \ U0010FFFF - Znak Unicode (do generowania surogatów)

Uwagi

Sekwencje specjalne łańcucha są przekształcane do odpowiedniego znaku w czasie kompilacji . Zwykłe ciągi zawierające ukośniki odwrotne nie są przekształcane.

Na przykład ciągi notEscaped i notEscaped2 poniżej nie są przekształcane w znak nowej linii, ale pozostaną jako dwa różne znaki ( '\' i 'n' ).

string escaped = "\n";
string notEscaped = "\\" + "n";
string notEscaped2 = "\\n";

Console.WriteLine(escaped.Length); // 1
Console.WriteLine(notEscaped.Length); // 2            
Console.WriteLine(notEscaped2.Length); // 2

Sekwencje specjalne znaków Unicode

string sqrt = "\u221A";      // √
string emoji = "\U0001F601"; // 😁
string text = "\u0022Hello World\u0022"; // "Hello World"
string variableWidth = "\x22Hello World\x22"; // "Hello World"

Unikanie specjalnych symboli w literałach znaków

Apostrofy

char apostrophe = '\'';

Ukośnik wsteczny

char oneBackslash = '\\';

Unikanie specjalnych symboli w literałach łańcuchowych

Ukośnik wsteczny

// The filename will be c:\myfile.txt in both cases
string filename = "c:\\myfile.txt";
string filename = @"c:\myfile.txt";

Drugi przykład wykorzystuje dosłowny ciąg literału , który nie traktuje ukośnika odwrotnego jako znaku zmiany znaczenia.

cytaty

string text = "\"Hello World!\", said the quick brown fox.";
string verbatimText = @"""Hello World!"", said the quick brown fox.";

Obie zmienne będą zawierać ten sam tekst.

„Witaj świecie!”, Powiedział szybki brązowy lis.

Newlines

Dosłowne ciągi literałów mogą zawierać znaki nowej linii:

string text = "Hello\r\nWorld!";
string verbatimText = @"Hello
World!";

Obie zmienne będą zawierać ten sam tekst.

Nierozpoznane sekwencje specjalne powodują błędy czasu kompilacji

Następujące przykłady nie zostaną skompilowane:

string s = "\c";
char c = '\c';

Zamiast tego w czasie kompilacji wygenerują błąd Unrecognized escape sequence .

Używanie sekwencji ucieczki w identyfikatorach

Sekwencje specjalne nie są ograniczone do string i char literałów.

Załóżmy, że musisz zastąpić metodę innej firmy:

protected abstract IEnumerable<Texte> ObtenirŒuvres();

i załóżmy, że znak Œ nie jest dostępny w kodowaniu znaków używanym do plików źródłowych w języku C #. Masz szczęście, dozwolone jest stosowanie znaków ucieczki typu \u#### lub \U######## w identyfikatorach w kodzie. Zatem legalne jest pisanie:

protected override IEnumerable<Texte> Obtenir\u0152uvres()
{
    // ...
}

a kompilator C # będzie wiedział, że Œ i \u0152 są tym samym znakiem.

(Jednak dobrym pomysłem może być przejście na UTF-8 lub podobne kodowanie, które może obsłużyć wszystkie znaki).



Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow