string (C#-Referenz)
Aktualisiert: November 2007
Der string-Typ stellt eine Abfolge von null oder mehr Unicode-Zeichen dar. string ist in .NET Framework ein Alias für String.
string ist zwar ein Verweistyp, aber die Gleichheitsoperatoren (== und !=) sind so definiert, dass sie die Werte von string-Objekten und nicht von Verweisen vergleichen. Tests für die Übereinstimmung von Zeichenfolgen lassen sich auf diese Weise intuitiver gestalten. Beispiel:
string a = "hello";
string b = "h";
// Append to contents of 'b'
b += "ello";
Console.WriteLine(a == b);
Console.WriteLine((object)a == (object)b);
Hiermit wird "True" und dann "False" angezeigt, da der Inhalt der Zeichenfolgen äquivalent ist, aber a und b nicht auf dieselbe Zeichenfolgeninstanz verweisen.
Durch den Operator "+" werden Zeichenfolgen verkettet:
string a = "good " + "morning";
Hiermit wird ein Zeichenfolgenobjekt erstellt, das "good morning" enthält.
Zeichenfolgen sind unveränderlich, d. h. der Inhalt eines Zeichenfolgenobjekts kann nicht mehr geändert werden, nachdem das Objekt erstellt wurde, auch wenn die Syntax etwas anderes vermuten lässt. Wenn Sie z. B. den folgenden Code schreiben, erstellt der Compiler für die neue Zeichenabfolge ein neues Zeichenfolgenobjekt, in der Variable b ist aber weiterhin der Buchstaben "h" enthalten.
string b = "h";
b += "ello";
Mit dem Operator [] kann auf einzelne Zeichen eines string mit Schreibschutz zugegriffen werden:
string str = "test";
char x = str[2]; // x = 's';
Zeichenfolgenliterale sind vom string-Typ und können in zwei Formaten geschrieben werden: in Anführungszeichen oder mit vorangestelltem @-Zeichen. Bei der ersten Möglichkeit werden Literale in doppelte Anführungszeichen (") eingeschlossen:
"good morning" // a string literal
Zeichenfolgenliterale können jedes Zeichenliteral enthalten. Escapesequenzen werden eingeschlossen:
string a = "\\\u0066\n";
Diese Zeichenfolge enthält einen umgekehrten Schrägstrich, den Buchstaben f und neue Zeile.
Hinweis: |
---|
Der Escapecode \udddd stellt das Unicode-Zeichen U+dddd dar (wobei dddd für eine vierstellige Zahl steht). Auch achtstelliger Unicode-Escapecode wird erkannt: \udddd\udddd. |
Bei der Schreibweise mit vorangestelltem @-Zeichen beginnen wörtliche Zeichenfolgenliterale mit @ und sind ebenfalls in doppelte Anführungszeichen eingeschlossen. Beispiel:
@"good morning" // a string literal
Der Vorteil von wörtlichen Zeichenfolgen besteht darin, dass Escapesequenzen nicht verarbeitet werden, wodurch z. B. das Schreiben vollqualifizierter Dateinamen erleichtert wird:
@"c:\Docs\Source\a.txt" // rather than "c:\\Docs\\Source\\a.txt"
Um ein doppeltes Anführungszeichen in einer Zeichenfolge mit vorangestelltem @-Zeichen zu verwenden, verdoppeln Sie es:
@"""Ahoy!"" cried the captain." // "Ahoy!" cried the captain.
Ein weiterer Verwendungszweck des @-Symbols besteht in der Verwendung von referenzierten Bezeichnern (/reference), die gleichzeitig C#-Schlüsselwörter sind.
Weitere Informationen über Zeichenfolgen in C# finden Sie im Zeichenfolgen (C#-Programmierhandbuch).
Beispiel
class SimpleStringTest
{
static void Main()
{
string a = "\u0068ello ";
string b = "world";
Console.WriteLine( a + b );
Console.WriteLine( a + b == "Hello World" ); // == performs a case-sensitive comparison
}
}
/* Output:
hello world
False
*/
C#-Programmiersprachenspezifikation
Weitere Informationen finden Sie in den folgenden Abschnitten von C#-Programmiersprachenspezifikation:
2.4.2 Bezeichner
2.4.4.5 Zeichenfolgenliterale
4.2.3 Der Typ "string"
7.9.7 Gleichheitsoperatoren für Zeichenfolgen