Sobes.tech
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