C#’da string(dize) bir metni temsil eden karakterler serisidir. Bir string çift tırnak(“) ile ifade edilen bir karakter, bir kelime yada uzun bir pasaj olabilir. Aşağıdaki ifade bir string sabiti örneğidir.
1 2 3 4 5 | "S" "String" "Bu uzun bir string ifadedir. Daha da uzun olabilir." |
C# String veri türünü metinsel değişmezleri saklamak için destekler. Bir string değişkeni tanımlanırken metinsel sabit bir ifade aktarılabilir. (Değişmez sabit ifade bellekte aynı adresi tanımlayan referans bir yapıyı ifade eder.)
1 2 3 4 5 6 7 8 9 10 11 12 13 | class Program { static void Main(string[] args) { string karakter = "B"; string kelime = "Bir"; string metin = "Bir metinsel ifade."; Console.ReadKey(); } } |
Bellekteki bir String nesnesinin maksimum boyutu 2 GB veya yaklaşık 1 milyar karakterdir. Bununla birlikte, pratik olarak bilgisayarın CPU’suna ve belleğine bağlı olarak daha az olacaktır.
C#’da bir string değişkeni bildirmenin iki yolu vardır. System.String sınıfını kullanma ve string anahtar sözcüğünü kullanma. İkisi de aynı ve fark yoktur.
1 2 3 4 5 6 7 8 9 10 11 12 13 | class Program { static void Main(string[] args) { string str1 = "Merhaba"; // string anahtarı String str2 = "Merhaba"; // System.String sınıfı Console.ReadKey(); } } |
C#’ta bir dize, bir koleksiyon veya bir karakter dizisidir. Böylece, bir karakter dizisi kullanılarak dize oluşturulabilir veya bir karakter dizisi gibi erişilebilir.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | class Program { static void Main(string[] args) { char[] karakterler = { 'M', 'e', 'r', 'h', 'a', 'b', 'a' }; string str1 = new string(karakterler); String str2 = new String(karakterler); foreach (char c in str1) { Console.WriteLine(c); } Console.ReadKey(); } } |
Özel karakterler
Gerçek dünyadaki bir metin herhangi bir karakteri içerebilir. C#’da, bir dize çift tırnak içine alındığından, bir dizeye ” dahil edilemez. Aşağıdakiler bir derleme zamanı hatası verecektir.
1 2 3 4 5 6 7 8 9 10 11 | class Program { static void Main(string[] args) { string text = "Bu bir "string" ifadesidir."; //Hata verir Console.ReadKey(); } } |
C#’da özel karakter kullanmak için kaçış karakteri \ (slash) kullanılır.
Özel karakter ve çift tırnaktan önce yada \,\n,\r,\t, vb. karakterlerden önce slash(\) kullanılır.
1 2 3 4 5 6 7 8 9 10 11 12 13 | class Program { static void Main(string[] args) { string text = "Bu bir \"string\" ifadedir."; string str = "abcd \\deneme"; string path = "\\\\bilgisayar\\ paylaş\\proje"; Console.ReadKey(); } } |
Ancak, her özel karakter için \ ön eki koymak çok sıkıcı olacaktır. Dizenin önüne bir @ eklenmesi, onun bir hazır bilgi olarak ele alınması gerektiğini ve herhangi bir karakterden kaçmaması gerektiğini gösterir.
1 2 3 4 5 6 7 8 9 10 11 12 13 | class Program { static void Main(string[] args) { string str = @"abcdf\rabc"; string path = @"\\bilgisayar\paylaş\proje"; string email = @"deneme@site.com"; Console.ReadKey(); } } |
Çok satırlı bir dize bildirmek için @ ve \ kullanınılır.
1 2 3 4 5 6 7 8 9 10 11 12 13 | class Program { static void Main(string[] args) { string str = @"Bu bir \ çok satırlı \ string verisidir."; Console.ReadKey(); } } |
Lütfen bir dizgede ” izin vermek için eğik çizgi kullanmanız gerektiğini unutmayın. @ yalnızca C#’daki özel karakterler içindir.
1 2 3 4 5 6 7 8 9 10 11 12 13 | class Program { static void Main(string[] args) { string text = @"Bu bir "string." nesnesidir."; // error string text = @"Bu bir \"string\" nesnesidir."; // error string text = "Bu bir \"string\" nesnesidir."; // valid Console.ReadKey(); } } |
C# String Birleştirme
Artı (+) operatörü ile birden fazla dize birleştirilebilir.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | class Program { static void Main(string[] args) { string kisi = "Hayri" + "KOÇMARLAR" + "113"; string isim = "Ahmet"; string soyisim = "Cansever"; string numara = "75"; string kimlik = "Merhaba" + isim + " " + soyisim + ", Numara: " + numara; Console.ReadKey(); } } |
Bir String C# dilinde değişmez bir veriyi temsil eder. Bu sadece okunabilir olduğu anlamına gelir. Bellekte oluşturulduğunda bir daha değiştirilemez.
A String is immutable in C#. It means it is read-only and cannot be changed once created in the memory. Dizeleri her birleştirdiğinizde .NET CLR, birleştirilmiş dize için yeni bir bellek konumu oluşturur. Bu nedenle, beşten fazla dizeyi birleştirirseniz dize yerine StringBuilder kullanılması önerilir.
String Ekleme Yapma
Dize enterpolasyonu, dizeleri birleştirmenin daha iyi bir yoludur. Dize değişkenlerini statik dizelerle birleştirmek için + işaretini kullanırız.
C# 6, enterpolasyonlu bir dizeyi tanımlamak için özel bir karakter $ içerir. Enterpolasyonlu bir dize, dize değişkenlerinin {} parantez içinde olması gereken statik dize ve dize değişkeninin bir karışımıdır.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | class Program { static void Main(string[] args) { string isim = "Ahmet"; string soyisim = "Cansever"; string numara = "75"; string kimlik = $"Merhaba {isim} {soyisim} Numara: {numara}"; Console.ReadKey(); } } |
Yukarıdaki enterpolasyon örneğinde, $enterpolasyonlu dizgiyi belirtir ve {} bir dizge ile birleştirilecek dizge değişkenini içerir.
Bir dizeye { veya } eklemek için iki ayraç, “{{” veya “}}” kullanın.