string (C#-Referenz)string (C# Reference)

Der Typ string stellt eine Sequenz von Null oder mehr Unicode-Zeichen dar.The string type represents a sequence of zero or more Unicode characters. string ist ein Alias für String in .NET Framework.string is an alias for String in the .NET Framework.

Obwohl string ein Verweistyp ist, werden die Gleichheitsoperatoren (== und !=) zum Vergleichen der Werte von string-Objekten, nicht von Verweisen, definiert.Although string is a reference type, the equality operators (== and !=) are defined to compare the values of string objects, not references. Dadurch wird das Testen auf Zeichenfolgengleichheit intuitiver.This makes testing for string equality more intuitive. Zum Beispiel:For example:

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.This displays "True" and then "False" because the content of the strings are equivalent, but a and b do not refer to the same string instance.

Der Operator „+“ verkettet Zeichenfolgen:The + operator concatenates strings:

string a = "good " + "morning";  

Dadurch wird ein Zeichenfolgenobjekt erstellt, das „Guten Morgen“ enthält.This creates a string object that contains "good morning".

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.Strings are immutable--the contents of a string object cannot be changed after the object is created, although the syntax makes it appear as if you can do this. 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.For example, when you write this code, the compiler actually creates a new string object to hold the new sequence of characters, and that new object is assigned to b. Die Zeichenfolge „h“ ist anschließend für die automatische Speicherbereinigung auswählbar.The string "h" is then eligible for garbage collection.

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

Der []-Operator kann für schreibgeschützten Zugriff auf einzelne Zeichen eines string verwendet werden:The [] operator can be used for readonly access to individual characters of a string:

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.String literals are of type string and can be written in two forms, quoted and @-quoted. Zeichenfolgenliterale in Anführungszeichen werden in doppelte Anführungszeichen (") eingeschlossen:Quoted string literals are enclosed in double quotation marks ("):

"good morning"  // a string literal  

Zeichenfolgenliterale können jeden Zeichenliteral enthalten.String literals can contain any character literal. Escapesequenzen sind enthalten.Escape sequences are included. 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.The following example uses escape sequence \\ for backslash, \u0066 for the letter f, and \n for newline.

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

Hinweis

Der Escapecode \udddd (wobei dddd eine vierstellige Zahl ist) stellt das Unicode-Zeichen U+dddd dar.The escape code \udddd (where dddd is a four-digit number) represents the Unicode character U+dddd. Escapecodes aus achtstelligen Unicode werden auch erkannt: \Udddddddd.Eight-digit Unicode escape codes are also recognized: \Udddddddd.

Wörtliche Zeichenfolgenliterale beginnen mit @ und sind ebenfalls in doppelte Anführungszeichen eingeschlossen.Verbatim string literals start with @ and are also enclosed in double quotation marks. Zum Beispiel:For example:

@"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:The advantage of verbatim strings is that escape sequences are not processed, which makes it easy to write, for example, a fully qualified file name:

@"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:To include a double quotation mark in an @-quoted string, double it:

@"""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.Another use of the @ symbol is to use referenced (/reference) identifiers that are C# keywords.

Weitere Informationen zu Zeichenfolgen in C# finden Sie unter Zeichenfolgen.For more information about strings in C#, see Strings.

BeispielExample

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#-ProgrammiersprachenspezifikationC# Language Specification

Weitere Informationen erhalten Sie unter C#-Sprachspezifikation. Die Sprachspezifikation ist die verbindliche Quelle für die Syntax und Verwendung von C#.

Siehe auchSee Also

C#-ReferenzC# Reference
C#-ProgrammierhandbuchC# Programming Guide
Empfohlene Vorgehensweisen für die Verwendung von ZeichenfolgenBest Practices for Using Strings
C#-SchlüsselwörterC# Keywords
C#-ProgrammierhandbuchC# Programming Guide
VerweistypenReference Types
WerttypenValue Types
Grundlegende ZeichenfolgenoperationenBasic String Operations
Erstellen neuer ZeichenfolgenCreating New Strings
Tabelle zur Formatierung numerischer ErgebnisseFormatting Numeric Results Table