Junior
128
questionbank
Чем класс String отличается от других типов данных в C#?
Answer from AI
sobes.tech AI
- Неизменяемый (immutable). После создания объекта
Stringего нельзя изменить. Любые операции, которые кажутся изменением строки, на самом деле создают новый объектString. - Ссылочный тип, но ведет себя частично как тип значения благодаря перегрузке операторов.
- Реализует интерфейсы
IEnumerable<char>,IComparable,IEquatable<string>. - Поддерживает индексацию для доступа к отдельным символам.
- При конкатенации строк с использованием оператора
+создает новый объектStringна каждой итерации, что может быть неэффективно. Для оптимизации таких операций используютStringBuilder.
string s1 = "hello"; // Создание строки
string s2 = s1; // s2 ссылается на тот же объект
s1 += " world"; // Создается НОВЫЙ объект "hello world", s1 теперь ссылается на него
// s2 по-прежнему ссылается на старый объект "hello"
Console.WriteLine(s1); // Выведет: hello world
Console.WriteLine(s2); // Выведет: hello
StringBuilder sb = new StringBuilder("hello");
sb.Append(" world"); // Изменяет текущий объект StringBuilder
Console.WriteLine(sb.ToString()); // Выведет: hello world