C# тилиндеги string классынын өзгөчөлүктөрү кандай?
sobes.tech AI
AIден жооп
C# тилиндеги string классынын негизги өзгөчөлүктөрү төмөндөгүлөр:
-
Өзгөрбөөчүлүк (Immutability):
stringобъектисин түзгөндөн кийин анын мазмуну өзгөрүлбөйт. Ар бир операция, ал тургай жолду бириктирүү сыяктуу көрүнгөн операция, чын эле жаңыstringобъектисин түзөт.string s1 = "Hello"; string s2 = s1 + " World"; // "Hello World" үчүн жаңы `string` объектисин түзөт // s1 объектисинде дагы эле "Hello" сакталатБул жолдорду көпчөлүктүү чөйрөлөрдө коопсуз кылат жана алардын колдонулушун
Dictionaryсыяктуу топтомдоруна ачкыч катары жеңилдетет. -
Байланыштуу түр (Reference Type): Жолдор көбүнчө маанилүү түрлөр катары жүрүшөт деп ойлошот, операторлорду жана маанилер боюнча салыштыруу аркылуу, бирок
string— байланыштуу түр.string a = "test"; string b = a; // b ошол эле "test" объектисине шилтеме кылат string c = "test"; // Эгер "test" жолу пулда болсо, c дагы ошол эле объектке шилтеме кылат -
+операторунун жүктөлүшү:+операторы жолдорду бириктирүү үчүн жүктөлгөн.string firstName = "John"; string lastName = "Doe"; string fullName = firstName + " " + lastName; // Жолдорду бириктирүүКөп жолу
+менен бириктирүү эффективдүү эмес болушу мүмкүн, анткени убактылуу объекттер түзүлөт. Көптөгөн жолдорду эффективдүү бириктирүү үчүнStringBuilderколдонуу сунушталат. -
Жолдордун пулу (String Interning): .NET аткаруу чөйрөсүндө жолдордун пулу механизми бар, ал коддо аныкталган уникалдуу жол литерлерин сактайт. Жол литер түзүлгөндө, CLR анын пулда бар-жогун текшерет. Эгер бар болсо, жаңы объект түзбөстөн, анын шилтемесин кайтарат.
string str1 = "hello"; // "hello" пулга кошулат (же алгач эле бар) string str2 = "hello"; // str2 ошол эле объектке шилтеме кылат Console.WriteLine(ReferenceEquals(str1, str2)); // True чыгатБул эс тутумду оптималдаштыруу.
-
Көптөгөн методдордун жыйындысы:
stringклассы жолдорду иштетүү үчүн бай методдорду сунуштайт, анын ичинде издөө, алмаштыруу, форматтоо, регистрди өзгөртүү жана башка көптөгөн нерселер.string original = " Hello, World! "; string trimmed = original.Trim(); // четиндеги боштуктарды алып салуу string upper = original.ToUpper(); // чоң тамгаларга айлантуу bool contains = original.Contains("World"); // жолдун бар-жогун текшерүү -
IEnumerable<char>ишке ашырылуусу: Жол негизинен белгилердин коллекциясы болуп саналат жанаIEnumerable<char>интерфейсин ишке ашырат, бул белгилерди өтүп, LINQ колдонууга мүмкүндүк берет.string text = "C#"; foreach (char c in text) { Console.WriteLine(c); }