Sobes.tech
Junior

Хусусиятҳои синфи string дар C# чист?

sobes.tech AI

Ҷавоб аз AI

Класи string дар C# дорои хусусиятҳои калидӣ мебошанд:

  1. Нестанишавӣ (Immutability): Пас аз сохтани объект string, мазмунаш тағир дода намешавад. Ҳар як амалияе, ки ҳамчун тағир додани сатр ба назар мерасад (масалан, пайваст кардан), дар асл як объект string нав месозад.

    string s1 = "Hello";
    string s2 = s1 + " World"; // Объекти нав барои "Hello World" сохта мешавад
    // Объекти s1 ҳанӯз ҳам "Hello"-ро дорад
    

    Ин сатрҳоро барои истифода дар муҳитҳои бисёрсоҳавӣ бехатар мекунад ва истифодаи онҳоро ҳамчун калидҳо дар коллектсияҳо, масалан, Dictionary, осон мекунад.

  2. Навъе ишоракунӣ (Reference Type): Гарчанде ки сатрҳо одатан ҳамчун навъҳои арзишӣ дар назар гирифта мешаванд, бо сабаби баргардонидани операторҳо ва муқоиса ба арзиш, string навъи ишоракунӣ мебошад.

    string a = "test";
    string b = a; // b ба ҳамон объект "test" дар куча ишора мекунад
    string c = "test"; // Агар сатр "test" аллакай дар пули сатрҳо бошад, c низ ба он ишора мекунад
    
  3. Баргардонидани оператори +: Оператор + барои пайваст кардани сатрҳо баргардонида шудааст.

    string firstName = "John";
    string lastName = "Doe";
    string fullName = firstName + " " + lastName; // Пайваст кардани сатрҳо
    

    Пайвасткунии бисёрмоддӣ бо + метавонад самаранок набошад, зеро объектҳои муваққатӣ месозад. Барои пайваст кардани миқдори зиёди сатрҳо, тавсия дода мешавад, ки StringBuilder истифода шавад.

  4. Пули сатрҳо (String Interning): муҳити иҷрои .NET механизми пули сатрҳоро дорад, ки литерҳои беназирро, ки дар код муайян шудаанд, нигоҳ медорад. Вақте ки литер сатр сохта мешавад, CLR санҷида, ки оё чунин сатр аллакай дар пул ҳаст ё не. Агар бошад, ба ҷои сохтани объект нав, ба он ишора мекунад.

    string str1 = "hello"; // "hello" ба пул илова мешавад (ё аллакай ҳаст)
    string str2 = "hello"; // str2 ба ҳамон объект дар пул ишора мекунад, ки str1
    Console.WriteLine(ReferenceEquals(str1, str2)); // True-ро мебарорад
    

    Ин оптимизатсияи хотира мебошад.

  5. Ҳамҷоя кардани методҳо: Класс string маҷмӯи бойи методҳоро барои кор бо сатрҳо пешниҳод мекунад, аз ҷумла ҷустуҷӯ, ивазкунӣ, формат, табдил додани ҳарфҳо ва бисёр чизҳои дигар.

    string original = "  Hello, World!  ";
    string trimmed = original.Trim(); // Тазал кардани ҷойҳо аз канорҳо
    string upper = original.ToUpper(); // Табдил додани ҳарфҳо ба ҳарфҳои калон
    bool contains = original.Contains("World"); // Санҷиши мавҷудияти зерсатр
    
  6. Иҷрои IEnumerable<char>: Сатр дар асл маҷмӯи аломатҳо мебошад ва интерфейси IEnumerable<char>-ро иҷро мекунад, ки имкон медиҳад аломатҳоро дар сатр гузаронидан ва LINQ-ро истифода бурдан.

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