C# Language
неизменность
Поиск…
Класс System.String
В C # (и .NET) строка представлена классом System.String. Ключевое слово string
- это псевдоним для этого класса.
Класс System.String неизменен, т. Е. После создания его состояние не может быть изменено.
Таким образом, все операции, выполняемые над строкой типа Substring, Remove, Replace, concatenation с помощью оператора +
т. Д., Создадут новую строку и вернут ее.
См. Следующую программу демонстрации -
string str = "mystring";
string newString = str.Substring(3);
Console.WriteLine(newString);
Console.WriteLine(str);
Это будет печатать string
и mystring
соответственно.
Строки и неизменность
Неизменяемые типы - это типы, которые при изменении создают новую версию объекта в памяти, вместо того, чтобы изменять существующий объект в памяти. Простейшим примером этого является встроенный тип string
.
Принимая следующий код, который добавляет «мир» к слову «Привет»,
string myString = "hello";
myString += " world";
В этом случае происходит то, что новый объект создается при добавлении к string
во второй строке. Если вы сделаете это как часть большого цикла, есть вероятность, что это вызовет проблемы с производительностью в вашем приложении.
Изменчивым эквивалентом для string
является StringBuilder
Принимая следующий код
StringBuilder myStringBuilder = new StringBuilder("hello");
myStringBuilder.append(" world");
Когда вы запустите это, вы сами модифицируете объект StringBuilder
в памяти.