Какви са характеристиките на класа string в C#?
sobes.tech AI
Отговор от AI
Класът string в C# има следните ключови характеристики:
-
Непроменяемост (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" в купчината string c = "test"; // Ако низът "test" вече съществува в пулa от низове, 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); }