Freigeben über


Vorgehensweise: Verketten mehrerer Zeichenfolgen (C#-Handbuch)

Verkettung ist der Prozess des Anhängens einer Zeichenfolge an das Ende einer anderen Zeichenfolge. Sie verketten Zeichenfolgen mit dem Operator +. Bei Zeichenfolgenliteralen und Zeichenfolgenkonstanten erfolgt die Verkettung beim Kompilieren. Es erfolgt keine Verkettung zur Laufzeit. Bei Zeichenfolgenvariablen erfolgt die Verkettung nur zur Laufzeit.

Tipp

Sie können KI-Unterstützung verwenden, um Zeichenfolgen zu verketten.

Zeichenfolgenliterale

Im folgenden Beispiel wird ein langes Zeichenfolgenliteral in kleinere Zeichenfolgen aufgeteilt, um die Lesbarkeit im Quellcode zu verbessern. Der Code verkettet die kleineren Zeichenfolgen, um das lange Zeichenfolgenliteral zu erstellen. Die Teile werden zur Kompilierzeit zu einer einzelnen Zeichenfolge verkettet. Es entstehen unabhängig von der Anzahl an Zeichenfolgen keine Leistungseinbußen zur Laufzeit.

// 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.";

Console.WriteLine(text);

+ und += Operatoren

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. Der Operator + ist einfach zu verwenden und gut für intuitiv verständlichen Code geeignet. Auch wenn Sie mehrere + Operatoren in einem Befehl verwenden, wird der Zeichenketteninhalt nur einmal kopiert. Der folgende Code zeigt Beispiele für die Verwendung der Operatoren + und += zum Verketten von Zeichenfolgen:

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 + ".";
Console.WriteLine(str);

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

Zeichenfolgeninterpolierung

In einigen Ausdrücken ist es einfacher, Zeichenfolgen mithilfe der Zeichenfolgeninterpolation zu verketten, wie in folgendem Beispiel gezeigt wird:

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

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

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

Hinweis

Bei der Zeichenfolgenverkettung behandelt der C#-Compiler eine NULL-Zeichenfolge wie eine leere Zeichenfolge.

Sie können die Zeichenfolge-Interpolation verwenden, um eine konstante Zeichenfolge zu initialisieren, wenn alle für Platzhalter verwendeten Ausdrücke ebenfalls konstante Zeichenfolgen sind.

String.Format

Eine andere Methoden zum Verketten von Zeichenfolgen ist String.Format. Diese Methode funktioniert gut, wenn Sie eine Zeichenfolge aus einigen einzelnen Zeichenfolgen erstellen.

StringBuilder

In anderen Fällen können Sie Zeichenfolgen in einer Schleife kombinieren, in denen die tatsächliche Anzahl von Quellzeichenfolgen groß sein kann. Für solche Szenarios wurde die Klasse StringBuilder entwickelt. Im folgenden Code werden Zeichenfolgen mit der Methode Append der Klasse StringBuilder verkettet.

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

Erfahren Sie mehr über die Gründe für das Verketten von Zeichenfolgen oder die StringBuilder-Klasse.

String.Concat oder String.Join

Eine weitere Option zum Verketten von Zeichenfolgen aus einer Sammlung ist die Verwendung der Methode String.Concat. Verwenden Sie die Methode String.Join, wenn ein Trennzeichen die Quellzeichenfolgen trennen soll. Der folgenden Code kombiniert ein Array aus Wörtern mithilfe beider Methoden:

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

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

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

LINQ und Enumerable.Aggregate

Die letzte Option zum Verketten von Zeichenfolgen aus einer Sammlung ist die Verwendung von LINQ und der Methode Enumerable.Aggregate. Diese Methode kombiniert die Quellzeichenfolgen mithilfe eines Lambdaausdrucks. Der Lambdaausdruck fügt jede Zeichenfolge der vorhandenen Akkumulation zu. Im folgenden Beispiel wird ein Array von Worten kombiniert, indem zwischen jedem Wort im Array Leerzeichen hinzugefügt werden:

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

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

Diese Option kann mehr Zuordnungen verursachen als andere Methoden zum Verketten von Auflistungen, da sie eine Zwischenzeichenfolge für jede Iteration erstellt. Wenn die Optimierung der Leistung von entscheidender Bedeutung ist, sollten Sie die Klasse StringBuilder oder die Methode String.Concat oder String.Join zur Verkettung einer Sammlung anstelle von Enumerable.Aggregate verwenden.

Verwenden von KI zum Verketten von Zeichenfolgen

Sie können KI-Tools wie GitHub Copilot verwenden, um C#-Code zu generieren, um Zeichenfolgen zu verketten. Sie können die Eingabeaufforderung anpassen, um das Ausgabeformat, die Variablen und die Methode anzugeben, die gemäß Ihren Anforderungen verwendet werden soll.

Hier ist ein Beispiel für eine Copilot-Chat-Eingabeaufforderung:

Generate C# code to use string interpolation to build an output string:
"Hello [name], today's date is [current date]. You have [count] new notifications."
Use variables for: name is "John", date is today's date, and notification count is 3.
Format the date as mm/dd/yyyy.
Show the output.

Überprüfen Sie die Vorschläge von Copilot, bevor Sie sie anwenden.

Weitere Informationen finden Sie unter Copilot FAQs.

Weitere Informationen