Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
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.
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
Dizeleri birleştirmek için C# kodu oluşturmak için GitHub Copilot gibi yapay zeka araçlarını kullanabilirsiniz. Çıktı biçimini, değişkenleri ve gereksinimlerinize göre kullanılacak yöntemi belirtmek için istemi özelleştirebilirsiniz.
Aşağıda örnek bir Copilot Sohbet istemi verilmiştir:
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.
Uygulamadan önce Copilot'un önerilerini gözden geçirin.
Daha fazla bilgi için bkz. Copilot Sıkça Sorulan Sorular.