string (C#-Referenz)

Der Typ string stellt eine Sequenz von Null oder mehr Unicode-Zeichen dar. string ist ein Alias für String in .NET Framework.

Obwohl string ein Verweistyp ist, werden die Gleichheitsoperatoren (== und !=) zum Vergleichen der Werte von string-Objekten, nicht von Verweisen, definiert. Dadurch wird das Testen auf Zeichenfolgengleichheit intuitiver. Zum Beispiel:

string a = "hello";  
string b = "h";  
// Append to contents of 'b'  
b += "ello";  
Console.WriteLine(a == b);  
Console.WriteLine((object)a == (object)b);  

Dies zeigt TRUE und anschließend FALSE an, weil der Inhalt der Zeichenfolgen gleich sind. Jedoch verweisen a und b nicht auf die gleiche Zeichenfolgeninstanz.

Der Operator „+“ verkettet Zeichenfolgen:

string a = "good " + "morning";  

Dadurch wird ein Zeichenfolgenobjekt erstellt, das „Guten Morgen“ enthält.

Zeichenfolgen sind unveränderlich. Die Inhalte eines Zeichenfolgenobjekts können nicht geändert werden, nachdem ein Objekt erstellt wurde, obwohl die Syntax den Eindruck erweckt, dass es machbar wäre. Wenn Sie z.B. diesen Code schreiben, erstellt der Compiler tatsächlich ein neues Zeichenfolgenobjekt, um die neue Zeichensequenz zu speichern. Das neue Objekt wird b zugewiesen. Die Zeichenfolge „h“ ist anschließend für die automatische Speicherbereinigung auswählbar.

string b = "h";  
b += "ello";  

Der []-Operator kann für schreibgeschützten Zugriff auf einzelne Zeichen eines string verwendet werden:

string str = "test";  
char x = str[2];  // x = 's';  

Zeichenfolgenliterale sind Typ string und können in zwei Formaten geschrieben werden: in Anführungszeichen und @-quoted. Zeichenfolgenliterale in Anführungszeichen werden in doppelte Anführungszeichen (") eingeschlossen:

"good morning"  // a string literal  

Zeichenfolgenliterale können jeden Zeichenliteral enthalten. Escapesequenzen sind enthalten. Im folgenden Beispiel wird die Escapesequenz \\ für den umgekehrten Schrägstrich, \u0066 für den Buchstaben „f“ und \n für den Zeilenumbruch verwendet.

string a = "\\\u0066\n";  
Console.WriteLine(a);  
Hinweis

Der Escapecode \udddd (wobei dddd eine vierstellige Zahl ist) stellt das Unicode-Zeichen U+dddd dar. Escapecodes aus achtstelligen Unicode werden auch erkannt: \Udddddddd.

Wörtliche Zeichenfolgenliterale beginnen mit @ und sind ebenfalls in doppelte Anführungszeichen eingeschlossen. Zum Beispiel:

@"good morning"  // a string literal  

Der Vorteil von wörtlichen Zeichenfolgen besteht darin, dass Escapesequenzen nicht verarbeitet werden, wodurch z.B. das Schreiben eines vollqualifizierten Dateinamens erleichtert wird:

@"c:\Docs\Source\a.txt"  // rather than "c:\\Docs\\Source\\a.txt"  

Verdoppeln Sie das doppelte Anführungszeichen, um es in einer @-quoted-Zeichenfolge aufzunehmen:

@"""Ahoy!"" cried the captain." // "Ahoy!" cried the captain.  

Eine andere Verwendung des @-Symbols besteht darin, verwiesene (/reference) Bezeichner zu verwenden, die C#-Schlüsselwörter sind.

Weitere Informationen zu Zeichenfolgen in C# finden Sie unter Zeichenfolgen.

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 erhalten Sie unter C#-Sprachspezifikation. Die Sprachspezifikation ist die verbindliche Quelle für die Syntax und Verwendung von C#.

Siehe auch

C#-Referenz
C#-Programmierhandbuch
Empfohlene Vorgehensweisen für die Verwendung von Zeichenfolgen
C#-Schlüsselwörter
C#-Programmierhandbuch
Verweistypen
Werttypen
Grundlegende Zeichenfolgenoperationen
Erstellen neuer Zeichenfolgen
Tabelle zur Formatierung numerischer Ergebnisse