Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Concatenatie is het proces van het aan elkaar koppelen van een tekenreeks aan het einde van een andere tekenreeks. U voegt tekenreeksen samen met behulp van de operator +
. Voor letterlijke tekenreeksen en tekenreeksconstanten vindt samenvoeging plaats tijdens het compileren; er geen runtime-samenvoeging plaatsvindt. Voor tekenreeksvariabelen vindt samenvoeging alleen plaats tijdens runtime.
Notitie
De C#-voorbeelden in dit artikel worden uitgevoerd in de Try.NET inline code-runner en speelomgeving. Selecteer de knop uitvoeren om een voorbeeld uit te voeren in een interactief venster. Zodra u de code hebt uitgevoerd, kunt u deze wijzigen en de gewijzigde code uitvoeren door opnieuw uit te voeren. De gewijzigde code wordt uitgevoerd in het interactieve venster of, als de compilatie mislukt, worden alle C#-compilerfoutberichten weergegeven.
Hint
U kunt AI-hulp gebruiken om tekenreeksen samen te voegen.
Letterlijke tekenreeksen
In het volgende voorbeeld wordt een lange letterlijke tekenreeks gesplitst in kleinere tekenreeksen om de leesbaarheid in de broncode te verbeteren. De code voegt de kleinere tekenreeksen samen om de lange tekenreeks te maken. De onderdelen worden samengevoegd tot één tekenreeks tijdens het compileren. Er zijn geen prestatiekosten tijdens de uitvoeringstijd, ongeacht het aantal tekenreeksen dat betrokken is.
// 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);
operators voor +
en +=
Als u tekenreeksvariabelen wilt samenvoegen, kunt u de operatoren +
of +=
gebruiken, tekenreeksinterpolatie of de String.Format, String.Concat, String.Join of StringBuilder.Append methoden. De operator +
is eenvoudig te gebruiken en maakt voor intuïtieve code. Zelfs als u meerdere +
operators in één instructie gebruikt, wordt de tekenreeksinhoud slechts één keer gekopieerd. De volgende code toont voorbeelden van het gebruik van de operators +
en +=
om tekenreeksen samen te voegen:
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);
Tekenreeksinterpolatie
In sommige expressies is het eenvoudiger om tekenreeksen samen te voegen met behulp van tekenreeksinterpolatie, zoals in de volgende code wordt weergegeven:
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);
Notitie
In samenvoegingsbewerkingen voor tekenreeksen behandelt de C#-compiler een null-tekenreeks die hetzelfde is als een lege tekenreeks.
U kunt tekenreeksinterpolatie gebruiken om een constante tekenreeks te initialiseren wanneer alle expressies die worden gebruikt voor tijdelijke aanduidingen ook constante tekenreeksen zijn.
String.Format
Een andere methode voor het samenvoegen van tekenreeksen is String.Format. Deze methode werkt goed wanneer je een tekenreeks opbouwt uit een paar componenten.
StringBuilder
In andere gevallen kunt u tekenreeksen combineren in een lus waarbij het werkelijke aantal brontekenreeksen groot kan zijn. De StringBuilder-klasse is ontworpen voor deze scenario's. De volgende code maakt gebruik van de Append methode van de StringBuilder-klasse om tekenreeksen samen te voegen.
// 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());
Meer informatie over de redenen om stringconcatenatie of de StringBuilder
klasse te kiezen.
String.Concat
of String.Join
Een andere optie voor het samenvoegen van tekenreeksen uit een verzameling is het gebruik van String.Concat methode. Gebruik de String.Join-methode als een scheidingsteken de brontekenreeksen moet scheiden. De volgende code combineert een matrix met woorden met behulp van beide 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 en Enumerable.Aggregate
Ten slotte kunt u LINQ- en de methode Enumerable.Aggregate gebruiken om tekenreeksen uit een verzameling samen te voegen. Deze methode combineert de brontekenreeksen met behulp van een lambda-expressie. De lambda-expressie voegt elke tekenreeks toe aan de bestaande verzameling. In het volgende voorbeeld wordt een matrix met woorden gecombineerd, waarbij een spatie wordt toegevoegd tussen elk woord in de matrix:
string[] words = ["The", "quick", "brown", "fox", "jumps", "over", "the", "lazy", "dog."];
var phrase = words.Aggregate((partialPhrase, word) =>$"{partialPhrase} {word}");
Console.WriteLine(phrase);
Deze optie kan meer toewijzingen veroorzaken dan andere methoden om verzamelingen samen te voegen, omdat er voor elke iteratie een tussenliggende string wordt gemaakt. Als het optimaliseren van de prestaties essentieel is, moet u rekening houden met de StringBuilder
klasse of de String.Concat
of String.Join
methode om een verzameling samen te stellen in plaats van Enumerable.Aggregate
.
AI gebruiken om tekenreeksen samen te voegen
U kunt AI-hulpprogramma's, zoals GitHub Copilot, gebruiken om C#-code te genereren om meerdere tekenreeksen samen te voegen. U kunt de prompt aanpassen om tekenreeksen en de methode op te geven die u wilt gebruiken op basis van uw vereisten.
In de volgende tekst ziet u een voorbeeldprompt voor Copilot Chat:
Generate C# code to use String.Format to build an output string "Hi x, today's date is y. You are z years old." where x is "John", y is today's date and z is the birthdate January 1, 2000. The final string should show date in the full format mm/dd/yyyy. Show output.
GitHub Copilot wordt mogelijk gemaakt door AI, dus verrassingen en fouten zijn mogelijk. Zie Veelgestelde vragen over Copilotvoor meer informatie.