Vorgehensweise: Verketten mehrerer Zeichenfolgen (C#-Handbuch)How to: Concatenate Multiple Strings (C# Guide)

Verkettung ist der Prozess, eine Zeichenfolge ans Ende einer anderen Zeichenfolge anzufügen.Concatenation is the process of appending one string to the end of another string. Sie können Zeichenfolgen mithilfe des +-Operators verketten.You concatenate strings by using the + operator. Bei Zeichenfolgenliteralen und Zeichenfolgenkonstanten erfolgt die Verkettung beim Kompilieren. Es erfolgt keine Verkettung zur Laufzeit.For string literals and string constants, concatenation occurs at compile time; no run-time concatenation occurs. Bei Zeichenfolgenvariablen erfolgt die Verkettung nur zur Laufzeit.For string variables, concatenation occurs only at run time.

Hinweis

Die C#-Beispiele in diesem Artikel werden in der Inlinecodeausführung und dem Playground von Try.NET ausgeführt.The C# examples in this article run in the Try.NET inline code runner and playground. Klicken Sie auf die Schaltfläche Ausführen, um ein Beispiel in einem interaktiven Fenster auszuführen.Select the Run button to run an example in an interactive window. Nachdem Sie den Code ausgeführt haben, können Sie ihn ändern und den geänderten Code durch erneutes Anklicken der Schaltfläche Ausführen ausführen.Once you execute the code, you can modify it and run the modified code by selecting Run again. Der geänderte Code wird entweder im interaktiven Fenster ausgeführt, oder das interaktive Fenster zeigt alle C#-Compilerfehlermeldungen an, wenn die Kompilierung fehlschlägt.The modified code either runs in the interactive window or, if compilation fails, the interactive window displays all C# compiler error messages.

Im folgenden Beispiel wird die Verkettung genutzt, um ein langes Zeichenfolgenliteral in kleinere Zeichenfolgen aufzuteilen, wodurch die Lesbarkeit im Quellcode verbessert wird.The following example uses concatenation to split a long string literal into smaller strings in order to improve readability in the source code. Diese Teile werden zur Kompilierzeit in eine einzelne Zeichenfolge verkettet.These parts are concatenated into a single string at compile time. Es entstehen unabhängig von der Anzahl an Zeichenfolgen keine Leistungseinbußen zur Laufzeit.There is no run-time performance cost regardless of the number of strings involved.

// Concatenation of literals is performed at compile time, not run time.
string text = "Historically, the world of data and the world of objects " +
"have not been well integrated. Programmers work in C# or Visual Basic " +
"and also in SQL or XQuery. On the one side are concepts such as classes, " +
"objects, fields, inheritance, and .NET Framework APIs. On the other side " +
"are tables, columns, rows, nodes, and separate languages for dealing with " +
"them. Data types often require translation between the two worlds; there are " +
"different standard functions. Because the object world has no notion of query, a " +
"query can only be represented as a string without compile-time type checking or " +
"IntelliSense support in the IDE. Transferring data from SQL tables or XML trees to " +
"objects in memory is often tedious and error-prone.";

System.Console.WriteLine(text);

Zum Verketten von Zeichenfolgenvariablen können Sie die Operatoren + und +=, die Zeichenfolgeninterpolation oder die Methoden String.Format, String.Concat, String.Join oder StringBuilder.Append verwenden.To concatenate string variables, you can use the + or += operators, string interpolation or the String.Format, String.Concat, String.Join or StringBuilder.Append methods. Der Operator + ist einfach zu verwenden und gut für intuitiv verständlichen Code geeignet.The + operator is easy to use and makes for intuitive code. Auch wenn Sie mehrere +-Operatoren in einer Anweisung verwenden, wird der Inhalt der Zeichenfolge nur einmal kopiert.Even if you use several + operators in one statement, the string content is copied only once. Der folgende Code zeigt Beispiele für die Verwendung der Operatoren + und += zum Verketten von Zeichenfolgen:The following code shows examples of using the + and += operators to concatenate strings:

string userName = "<Type your name here>";
string dateString = DateTime.Today.ToShortDateString();

// Use the + and += operators for one-time concatenations.
string str = "Hello " + userName + ". Today is " + dateString + ".";
System.Console.WriteLine(str);

str += " How are you today?";
System.Console.WriteLine(str);

In einigen Ausdrücken ist es einfacher, Zeichenfolgen mithilfe der Zeichenfolgeninterpolation zu verketten, wie in folgendem Beispiel gezeigt wird:In some expressions, it's easier to concatenate strings using string interpolation, as the following code shows:

string userName = "<Type your name here>";
string date = DateTime.Today.ToShortDateString();

// Use string interpolation to concatenate strings.
string str = $"Hello {userName}. Today is {date}.";
System.Console.WriteLine(str);

str = $"{str} How are you today?";
System.Console.WriteLine(str);

Hinweis

Bei der Zeichenfolgenverkettung behandelt der C#-Compiler eine NULL-Zeichenfolge wie eine leere Zeichenfolge.In string concatenation operations, the C# compiler treats a null string the same as an empty string.

Eine andere Methoden zum Verketten von Zeichenfolgen ist String.Format.Other method to concatenate strings is String.Format. Diese Methode funktioniert gut, wenn Sie eine Zeichenfolge mit einer kleinen Anzahl von Zeichenfolgenkomponenten erstellen.This method works well when you are building a string from a small number of component strings.

In anderen Fällen kann es passieren, dass Sie Zeichenfolgen in einer Schleife kombinieren, bei der Sie nicht wissen, wie viele Quellzeichenfolgen Sie kombinieren, und die tatsächliche Anzahl an Quellzeichenfolgen kann in solchen Fällen sehr groß sein.In other cases you may be combining strings in a loop, where you don't know how many source strings you are combining, and the actual number of source strings may be quite large. Für solche Szenarios wurde die Klasse StringBuilder entwickelt.The StringBuilder class was designed for these scenarios. Im folgenden Code werden Zeichenfolgen mit der Methode Append der Klasse StringBuilder verkettet.The following code uses the Append method of the StringBuilder class to concatenate strings.

// Use StringBuilder for concatenation in tight loops.
var sb = new System.Text.StringBuilder();
for (int i = 0; i < 20; i++)
{
    sb.AppendLine(i.ToString());
}
System.Console.WriteLine(sb.ToString());

Erfahren Sie mehr über die Gründe für das Verketten von Zeichenfolgen oder die StringBuilder-KlasseYou can read more about the reasons to choose string concatenation or the StringBuilder class

Eine weitere Option zum Verketten von Zeichenfolgen aus einer Sammlung ist die Verwendung der Methode String.Concat.Another option to join strings from a collection is to use String.Concat method. Verwenden Sie die String.Join-Methode, wenn Quellzeichenfolgen durch ein Trennzeichen getrennt werden sollen.Use String.Join method if source strings should be separated by a delimeter. Der folgenden Code kombiniert ein Array aus Wörtern mithilfe beider Methoden:The following code combines an array of words using both methods:

string[] words = { "The", "quick", "brown", "fox", "jumps", "over", "the", "lazy", "dog." };

var unreadablePhrase = string.Concat(words);
System.Console.WriteLine(unreadablePhrase);

var readablePhrase = string.Join(" ", words);
System.Console.WriteLine(readablePhrase);

Die letzte Option zum Verketten von Zeichenfolgen aus einer Sammlung ist die Verwendung von LINQ und der Methode Enumerable.Aggregate.At last, you can use LINQ and the Enumerable.Aggregate method to join strings from a collection. Diese Methode kombiniert die Quellzeichenfolgen mithilfe eines Lambdaausdrucks.This method combines the source strings using a lambda expression. Der Lambdaausdruck fügt jede Zeichenfolge der vorhandenen Akkumulation zu.The lambda expression does the work to add each string to the existing accumulation. Im folgenden Beispiel wird ein Array von Worten kombiniert, indem zwischen jedem Wort im Array Leerzeichen hinzugefügt werden:The following example combines an array of words by adding a space between each word in the array:

string[] words = { "The", "quick", "brown", "fox", "jumps", "over", "the", "lazy", "dog." };

var phrase = words.Aggregate((partialPhrase, word) =>$"{partialPhrase} {word}");
System.Console.WriteLine(phrase);

Sie können diese Beispiele ausprobieren, indem Sie sich den Code in unserem GitHub-Repository ansehen.You can try these samples by looking at the code in our GitHub repository. Alternativ dazu können Sie die Beispiele als ZIP-Datei herunterladen.Or you can download the samples as a zip file.

Siehe auchSee Also