Sobes.tech
Junior

C# тилиндеги string классынын өзгөчөлүктөрү кандай?

sobes.tech AI

AIден жооп

C# тилиндеги string классынын негизги өзгөчөлүктөрү төмөндөгүлөр:

  1. Өзгөрбөөчүлүк (Immutability): string объектисин түзгөндөн кийин анын мазмуну өзгөрүлбөйт. Ар бир операция, ал тургай жолду бириктирүү сыяктуу көрүнгөн операция, чын эле жаңы string объектисин түзөт.

    string s1 = "Hello";
    string s2 = s1 + " World"; // "Hello World" үчүн жаңы `string` объектисин түзөт
    // 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 ошол эле объектке шилтеме кылат
    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);
    }