Sobes.tech
Junior

C# dilinde string sınıfının özellikleri nelerdir?

sobes.tech yapay zeka

AI'dan gelen yanıt

C# dilinde string sınıfının aşağıdaki temel özellikleri vardır:

  1. Değiştirilemezlik (Immutability): Bir string nesnesi oluşturulduktan sonra içeriği değiştirilemez. Görünüşte dizgeyi değiştiren herhangi bir işlem (örneğin, birleştirme), aslında yeni bir string nesnesi oluşturur.

    string s1 = "Hello";
    string s2 = s1 + " World"; // "Hello World" için yeni bir string nesnesi oluşturulur
    // s1 nesnesi hâlâ "Hello" içerir
    

    Bu, dizgelerin çoklu iş parçacıklı ortamlarda güvenli olmasını sağlar ve Dictionary gibi koleksiyonlarda anahtar olarak kullanımını kolaylaştırır.

  2. Referans Tipi (Reference Type): Dizgeler genellikle değer tipleri gibi davranır, operatör aşırı yüklemesi ve değer karşılaştırması sayesinde, ancak string bir referans tipidir.

    string a = "test";
    string b = a; // b, heap'teki aynı "test" nesnesine referans eder
    string c = "test"; // Eğer "test" dizgesi zaten string havuzunda varsa, c de ona referans eder
    
  3. + operatörünün aşırı yüklenmesi: + operatörü dizgelerin birleştirilmesi için aşırı yüklenmiştir.

    string firstName = "John";
    string lastName = "Doe";
    string fullName = firstName + " " + lastName; // Dizgi birleştirme
    

    + kullanımıyla çoklu dizgi birleştirme, geçici nesnelerin oluşturulması nedeniyle verimsiz olabilir. Daha verimli dizgi birleştirmeleri için StringBuilder kullanılması önerilir.

  4. Dizgi Havuzu (String Interning): .NET çalışma zamanı, kodda tanımlanan benzersiz dizgi literallerini saklayan bir mekanizma olan dizgi havuzuna sahiptir. Bir dizgi literali oluşturulduğunda, CLR zaten böyle bir dizginin havuzda olup olmadığını kontrol eder. Varsa, yeni nesne oluşturmadan mevcut nesneye referans döner.

    string str1 = "hello"; // "hello" havuza eklenir (veya zaten varsa)
    string str2 = "hello"; // str2, str1 ile aynı nesneye referans eder
    Console.WriteLine(ReferenceEquals(str1, str2)); // True döndürür
    

    Bu, bellek optimizasyonudur.

  5. Geniş fonksiyon seti: string sınıfı, arama, değiştirme, biçimlendirme, büyük/küçük harfe dönüştürme ve daha fazlasını içeren zengin bir metod yelpazesi sağlar.

    string original = "  Hello, World!  ";
    string trimmed = original.Trim(); // Kenar boşluklarını kaldırır
    string upper = original.ToUpper(); // Büyük harfe dönüştürür
    bool contains = original.Contains("World"); // Alt dizgi içerip içermediğini kontrol eder
    
  6. IEnumerable<char> uygulaması: Dizi, temel olarak bir karakter koleksiyonudur ve IEnumerable<char> arayüzünü uygular, bu da dizge içindeki karakterleri dolaşmaya ve LINQ kullanmaya olanak tanır.

    string text = "C#";
    foreach (char c in text)
    {
        Console.WriteLine(c);
    }