Ինչպիսի՞ն են C#-ի string դասի առանձնահատկությունները։
sobes.tech AI
Պատասխան AI-ից
C#-ի string դասը ունի հետևյալ հիմնական առանձնահատկությունները.
-
Անփոփոխություն (Immutability):
stringօբյեկտը ստեղծելուց հետո նրա պարունակությունը չի կարող փոխվել: Ամեն մի գործողություն, որը թվում է որպես տողի փոփոխություն (օրինակ՝ կոնկատենացիա), իրականում ստեղծում է նորstringօբյեկտ:string s1 = "Hello"; string s2 = s1 + " World"; // Ստեղծվում է նոր string օբյեկտ "Hello World" համար // Օբյեկտը s1 մնում է "Hello"Սա ապահովում է տողերի անվտանգությունը բազմաթյանային միջավայրերում և հեշտացնում է դրանց օգտագործումը որպես բանալի հավաքածուներում, ինչպիսիք են
Dictionary: -
Հղումային տիպ (Reference Type): Թեև տողերը հաճախ պահվում են որպես արժեքային տիպեր՝ օպերատորների և արժեքով համեմատության շնորհիվ,
string-ը հղումային տիպ է:string a = "test"; string b = a; // b հղում է նույն `test` օբյեկտին heap-ում 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 հղում է նույն օբյեկտին, ինչ str1 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); }