C# Language
Strängföljdsekvenser
Sök…
Syntax
- \ '- enda offert (0x0027)
- \ "- dubbla offert (0x0022)
- \\ - backslash (0x005C)
- \ 0 - null (0x0000)
- \ a - varning (0x0007)
- \ b - backspace (0x0008)
- \ f - formflöde (0x000C)
- \ n - ny rad (0x000A)
- \ r - vagn retur (0x000D)
- \ t - horisontell flik (0x0009)
- \ v - vertikal flik (0x000B)
- \ u0000 - \ uFFFF - Unicode-tecken
- \ x0 - \ xFFFF - Unicode-tecken (kod med variabel längd)
- \ U00000000 - \ U0010FFFF - Unicode-tecken (för att generera surrogat)
Anmärkningar
Strängfångssekvenser transformeras till motsvarande karaktär vid sammanställningstiden . Vanliga strängar som råkar innehålla bakåt snedstreck inte omvandlas.
Till exempel notEscaped
strängarna notEscaped
och notEscaped2
nedan inte till en ny linje-karaktär, men kommer att förbli som två olika tecken ( '\'
och '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
Unicode-karaktärsekvenser
string sqrt = "\u221A"; // √
string emoji = "\U0001F601"; // 😁
string text = "\u0022Hello World\u0022"; // "Hello World"
string variableWidth = "\x22Hello World\x22"; // "Hello World"
Rymmer specialsymboler i karaktärslitteraler
apostrofer
char apostrophe = '\'';
bakstreck
char oneBackslash = '\\';
Rymmer speciella symboler i strängbokstäver
bakstreck
// The filename will be c:\myfile.txt in both cases
string filename = "c:\\myfile.txt";
string filename = @"c:\myfile.txt";
Det andra exemplet använder en verbatim sträng bokstavlig , som inte behandlar motstreck som ett flyktecken.
Citat
string text = "\"Hello World!\", said the quick brown fox.";
string verbatimText = @"""Hello World!"", said the quick brown fox.";
Båda variablerna kommer att innehålla samma text.
"Hej världen!", Sa den snabbbruna räven.
radbrytningar
Verbatim strängbokstäver kan innehålla nya linjer:
string text = "Hello\r\nWorld!";
string verbatimText = @"Hello
World!";
Båda variablerna kommer att innehålla samma text.
Oigenkända flyktningssekvenser ger fel i kompileringstid
Följande exempel kommer inte att sammanställas:
string s = "\c";
char c = '\c';
Istället kommer de att producera felet Unrecognized escape sequence
vid kompileringstid.
Använda flukt-sekvenser i identifierare
Escape-sekvenser är inte begränsade till string
och char
literaler.
Anta att du måste åsidosätta en metod från tredje part:
protected abstract IEnumerable<Texte> ObtenirŒuvres();
och antar att tecknet Œ
inte är tillgängligt i den teckenkodning du använder för dina C # -källfiler. Du har tur, det är tillåtet att använda rymningar av typen \u####
eller \U########
i identifierare i koden. Så det är lagligt att skriva:
protected override IEnumerable<Texte> Obtenir\u0152uvres()
{
// ...
}
och C # -kompileraren vet att Œ
och \u0152
är samma karaktär.
(Det kan dock vara en bra idé att byta till UTF-8 eller en liknande kodning som kan hantera alla tecken.)