C# String-Literale (Stringliteral)

Eine Möglichkeit der Problematik von zwei doppelten Hochkommas hintereinander („“) zu begegnen oder um den Backslash bei Pfadangaben zu ermöglichen, ist der String-Literal. Sicherlich ist Ihnen in fremden Programmen schon mal aufgefallen, dass vor manchen String-Zuweisungen das AT („@“) steht.

So erzeugt folgende C#-Zeile einen Fehler:
string sLiteral = „Bitte drücken Sie die „OK“-Taste“;

Sie können dieses Problem so umgehen:
string sLiteral = „Bitte drücken Sie die „OK“-Taste“;

Oder noch besser mit dem String-Literal („@“):
string sLiteral = @“Bitte drücken Sie die „“OK““-Taste“;
Durch das AT (@)-Zeichen weisen Sie den C#-Interpreter an, er möge bitte zwei Hochkommas hintereinander als eines betrachten. Der String wird so valide.
So werden aber auch Steuerzeichen durch ein Literal nicht umgesetzt, was meistens wünschenswert ist. Nehmen wir als Beispiel dem Tabulator und den Klassiker „Hello world“:

string Literal1 ="Hello t world";               // Hello     world
string Literal2 = @"Hello t world";               // Hello t world

Besonders beliebt und sinnvoll die der String-Literal in Pfadangaben.
So wird C# die folgende Zeile mit „Nicht erkannte Escapesequenz“ anmäckern:

string sMeinPfad = „c:mein-ordnermeine-datei.txt“;

Mit zwei Backslash wird der String valide:
string sMeinPfad = „c:\mein-ordner\meine-datei.txt“;

Als Literal schreiben Sie folgendes:
string sMeinPfad = @“c:mein-ordnermeine-datei.txt“;

Um Server oder Dateien via UNC-Pfad anzusprechen, benötigt man den doppelten Backslash (\). So kann ich aus zwei Slashs vier schreiben, um mein Ergebnis zu erreichen:

string Con = „\\server\freigabe\file.txt“;   // \serverfreigabefile.txt

Oder

string Con = @“\serverfreigabefile.txt“;      // \serverfreigabefile.txt

Einen wirklichen Mehrwert bieten das C#-String-Literal allerdings durch seine Multi-Line-Fähigkeit. Wenn wir gezwungen sind, einen String über mehrere Zeilen zu schreiben, werden die meisten Programmierer dies in etwa so erledigen:

string sLangerString = "Dies ist der Beispielcode für einen langen, " +
"sehr langen String. Dadurch, dass ich als herrschender Programmierer " +
"den String über mehrere Zeilen ziehen möchte, muss ich die einzelnen " +
"Teile mit einem Plus verknüpfen";

Stattdessen kann man unter Zuhilfenahme des AT (@) wie folgt schreiben:

string sLangerString = @"Dies ist der Beispielcode für einen langen,
sehr langen String. Nun verknüpfen wir den Code nicht mit einem
Plus, sondern nutzen den Vorteil eines String-Literals der es
ermöglicht, den Zeilenumbruch zu ignorieren";

Auch bei SQL-Statements, die ja bekanntlich meist aus längeren Zeichenfolgen bestehen, leisten die String-Literale gute dienste. Wie man zusätzlich noch Hochkommas maskiert, beschreibe ich im Artikel „C# Hochkomma maskieren für SQL-Statements (SQL-Escape)„.

Schreibe einen Kommentar