Aracılığıyla paylaş


Birden çok dizeyi birleştirme (C# Kılavuzu)

Birleştirme, bir dizeyi başka bir dizenin sonuna ekleme işlemidir. + işlecini kullanarak dizeleri birleştirirsiniz. Dize değişmezleri ve dize sabitleri için birleştirme derleme zamanında gerçekleşir; çalışma zamanında birleştirme gerçekleşmez. Dize değişkenleri için birleştirme yalnızca çalışma zamanında gerçekleşir.

Not

Bu makaledeki C# örnekleri Try.NET satır içi kod çalıştırıcısında ve oyun alanında çalıştırılır. Etkileşimli bir pencerede örnek çalıştırmak için Çalıştır düğmesini seçin. Kodu yürüttükten sonra, kodu değiştirebilir ve değiştirilen kodu yeniden çalıştır'ı seçerek çalıştırabilirsiniz. Değiştirilen kod etkileşimli pencerede çalışır veya derleme başarısız olursa, etkileşimli pencerede tüm C# derleyicisi hata iletileri görüntülenir.

Bahşiş

Dizeleri birleştirmek için yapay zeka yardımı kullanabilirsiniz.

Dize sabitleri

Uzun bir string literal'ı daha küçük stringlere parçalayarak kaynak kodda okunabilirliği geliştirmek için aşağıdaki örneği kullanabilirsiniz. Kod, uzun dize sabitini oluşturmak için küçük dizeleri birleştirir. Parçalar, derleme zamanında tek bir dizede birleştirilir. Söz konusu dizelerin sayısından bağımsız olarak çalışma zamanında performans maliyeti yoktur.

// 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);

+ ve += işleçleri

Dize değişkenlerini birleştirmek için + veya += işleçlerini, dize ilişkilendirme veya String.Format, String.Concat, String.Join veya StringBuilder.Append yöntemlerini kullanabilirsiniz. + operatörü kullanımı kolaydır ve sezgisel kod sağlar. Bir deyimde birkaç + işleci kullansanız bile, dize içeriği yalnızca bir kez kopyalanır. Aşağıdaki kod, dizeleri birleştirmek için + ve += işleçlerini kullanma örneklerini gösterir:

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);

Dize enterpolasyonu

Bazı ifadelerde, aşağıdaki kodda gösterildiği gibi dize ilişkilendirmesini kullanarak dizeleri birleştirmek daha kolaydır:

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);

Not

Dize birleştirme işlemlerinde C# derleyicisi null dizeyi boş dizeyle aynı şekilde işler.

Yer tutucular için kullanılan tüm ifadeler de sabit dizeler olduğunda, sabit bir dize başlatmak için dize ilişkilendirmesini kullanabilirsiniz.

String.Format

Dizeleri birleştirmenin başka bir yöntemi de String.Format. Bu yöntem, birkaç bileşen dizesinden bir dize oluştururken iyi çalışır.

StringBuilder

Diğer durumlarda, gerçek kaynak dize sayısının büyük olabileceği bir döngüde dizeleri birleştiriyor olabilirsiniz. StringBuilder sınıfı bu senaryolar için tasarlanmıştır. Aşağıdaki kod, dizeleri birleştirmek için Append sınıfının StringBuilder yöntemini kullanır.

// 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());

Dize birleştirme veya StringBuilder sınıfı seçimi için nedenler hakkında daha fazla bilgi edinebilirsiniz.

String.Concat veya String.Join

Bir koleksiyondan dizeleri birleştirmenin bir diğer seçeneği de String.Concat yöntemi kullanmaktır. Sınırlayıcının kaynak dizeleri ayırması gerekiyorsa String.Join yöntemini kullanın. Aşağıdaki kod, her iki yöntemi de kullanarak bir sözcük dizisini birleştirir:

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 ve Enumerable.Aggregate

Sonunda, bir koleksiyondaki dizeleri birleştirmek için LINQ ve Enumerable.Aggregate yöntemini kullanabilirsiniz. Bu yöntem bir lambda ifadesi kullanarak kaynak dizeleri birleştirir. Lambda ifadesi, her dizeyi var olan birikmeye ekleme işini yapar. Aşağıdaki örnek, dizideki her sözcük arasına boşluk ekleyerek bir sözcük dizisini birleştirir:

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

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

Bu seçenek, her yineleme için bir ara dize oluşturduğundan koleksiyonları birleştirmek için diğer yöntemlerden daha fazla ayırmaya neden olabilir. Performansı iyileştirmek kritikse, StringBuilderyerine bir koleksiyonu birleştirmek için String.Concat sınıfını veya String.Join yöntemini göz önünde bulundurun.

Dizeleri birleştirmek için yapay zeka kullanma

Birden çok dizeyi birleştirmek üzere C# kodu oluşturmak için GitHub Copilot gibi yapay zeka araçlarını kullanabilirsiniz. Dizeleri ve gereksinimlerinize göre kullanılacak yöntemi belirtmek için istemi özelleştirebilirsiniz.

Aşağıdaki metinde Copilot Sohbeti için örnek bir istem gösterilmektedir:

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 yapay zeka ile desteklendiğinden sürprizler ve hatalar mümkündür. Daha fazla bilgi için bkz. Copilot Sıkça Sorulan Sorular.

Ayrıca bkz.