Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Összefűzés az a folyamat, amikor egy karakterláncot egy másik karakterlánc végéhez fűzünk hozzá. Sztringeket fűzhet össze a +
operátorral. Sztringkonstansok és sztringállandók esetében az összefűzés fordításkor történik; nincs futásidejű összefűzés. Sztringváltozók esetén az összefűzés csak futásidőben történik.
Jegyzet
A cikkben szereplő C#-példák a Try.NET beágyazott kódfuttatóban és -játszótéren futnak. Kattintson a futtatása gombra egy példa interaktív ablakban való futtatásához. Miután végrehajtotta a kódot, módosíthatja és futtathatja a módosított kódot a ismételt futtatásával. A módosított kód vagy az interaktív ablakban fut, vagy ha a fordítás sikertelen, az interaktív ablakban megjelenik az összes C#-fordító hibaüzenet.
Tipp
A sztringek összefűzésére AI-segéd használható.
Sztringkonstansok
Az alábbi példa egy hosszú karakterláncot kisebb karakterláncokra osztja fel a forráskód olvashatósága érdekében. A kód összefűzi a kisebb karakterláncokat a hosszú karakterlánc konstans létrehozásához. A részek fordítási időben egyetlen karakterlánccá vannak összefűzve. Az érintett karakterláncok számától függetlenül nincs futásidejű teljesítményköltség.
// 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);
+
és +=
operátorok
A sztringváltozók összefűzéséhez használhatja a +
vagy +=
operátorokat, sztring interpolációs vagy a String.Format, String.Concat, String.Join vagy StringBuilder.Append metódusokat. A +
operátor könnyen használható, és intuitív kódot biztosít. Még ha több +
operátort is használ egy utasításban, a sztring tartalma csak egyszer lesz másolva. Az alábbi kód példákon mutatja be a +
és +=
operátorok használatát sztringek összefűzésére.
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);
Sztring interpolációja
Egyes kifejezésekben egyszerűbb sztringeket összefűzni sztringek interpolációjával, ahogy az alábbi kód is mutatja:
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);
Jegyzet
A sztringösszefűzési műveletekben a C# fordító a null sztringet ugyanúgy kezeli, mint egy üres sztringet.
Sztringinterpolációval inicializálhat egy állandó sztringet, ha a helyőrzőkhöz használt kifejezések is állandó sztringek.
String.Format
A sztringek összefűzésére egy másik módszer a String.Format. Ez a módszer akkor működik jól, ha karaktersorozatot készít néhány összetevő karaktersorozatokból.
StringBuilder
Más esetekben előfordulhat, hogy sztringeket kombinál egy hurokban, ahol a forrássztringek tényleges száma nagy lehet. A StringBuilder osztályt ezekhez a forgatókönyvekhez tervezték. Az alábbi kód a Append osztály StringBuilder metódusát használja a sztringek összefűzéséhez.
// 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());
További információkat olvashat a sztringösszefűzés kiválasztásának okairól vagy a StringBuilder
osztály-ről.
String.Concat
vagy String.Join
Egy gyűjtemény sztringjeinek összekapcsolására másik lehetőség az String.Concat metódus használata. Használja a String.Join módszert, ha egy elválasztóval kell a forrásszövegeket elválasztani. A következő kód két módszerrel kombinálja a szavak tömbét:
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 és Enumerable.Aggregate
Végül használhatja LINQ és a Enumerable.Aggregate metódust a gyűjtemény sztringjeinek összekapcsolásához. Ez a metódus a forrássztringeket lambda kifejezéssel egyesíti. A lambda kifejezés elvégzi az egyes sztringek hozzáadását a meglévő felhalmozáshoz. Az alábbi példa egy szótömböt egyesít, és szóközt ad hozzá a tömb egyes szavai között:
string[] words = ["The", "quick", "brown", "fox", "jumps", "over", "the", "lazy", "dog."];
var phrase = words.Aggregate((partialPhrase, word) =>$"{partialPhrase} {word}");
Console.WriteLine(phrase);
Ez a beállítás több foglalást okozhat, mint a gyűjtemények összefűzését szolgáló más metódusok, mivel minden iterációhoz létrehoz egy köztes sztringet. Ha a teljesítmény optimalizálása kritikus fontosságú, fontolja meg a StringBuilder
osztályt vagy a String.Concat
vagy String.Join
metódust a gyűjtemény összefűzéséhez Enumerable.Aggregate
helyett.
AI használata karakterláncok összefűzésére
Az AI-eszközök, például a GitHub Copilot használatával C#-kódot hozhat létre több sztring összefűzéséhez. A kérést testre szabhatja, hogy megadja az igényeinek megfelelő karakterláncokat és metódust.
Az alábbi szöveg egy példakérést jelenít meg a Copilot-csevegéshez:
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.
A GitHub Copilot mesterséges intelligenciával működik, így meglepetések és hibák lehetségesek. További információ: Copilot gyakori kérdések.