Язык программирования C#9 и платформа .NET5 - Троелсен Эндрю - Страница 62
- Предыдущая
- 62/642
- Следующая
Console.WriteLine();}В то время как приведенные здесь примеры просты и используют те же самые буквы в большинстве культур, если ваше приложение должно принимать во внимание разные наборы культур, тогда применение перечисления
StringComparisonСтроки неизменяемы
Один из интересных аспектов класса
System.StringSystem.Stringstringstringstatic void StringsAreImmutable(){ Console.WriteLine("=> Immutable Strings:\a"); // Установить начальное значение для строки. string s1 = "This is my string."; Console.WriteLine("s1 = {0}", s1); // Преобразована ли строка si в верхний регистр? string upperString = s1.ToUpper(); Console.WriteLine("upperString = {0}", upperString); // Нет! Строка si осталась в том же виде! Console.WriteLine("s1 = {0}", s1);}Просмотрев показанный далее вывод, можно убедиться, что в результате вызова метода
ToUpper()string(s1)strings1 = This is my string.upperString = THIS IS MY STRING.s1 = This is my string.Тот же самый закон неизменяемости строк действует и в случае применения операции присваивания С#. Чтобы проиллюстрировать, реализуем следующий метод
StringsAreImmutable2()static void StringsAreImmutable2(){ Console.WriteLine("=> Immutable Strings 2:\a"); string s2 = "My other string"; s2 = "New string value";}Скомпилируйте приложение и запустите
ildasm.exeStringsAreImmutable2().method private hidebysig static void StringsAreImmutable2() cil managed{ // Code size 21 (0x15) .maxstack 1 .locals init (string V_0) IL_0000: nop IL_0001: ldstr "My other string" IL_0006: stloc.0 IL_0007: ldstr "New string value" /* 70000B3B */ IL_000c: stloc.0 IL_000d: ldloc.0 IL_0013: nop IL_0014: ret} // end of method Program::StringsAreImmutable2Хотя низкоуровневые детали языка CIL пока подробно не рассматривались, обратите внимание на многочисленные вызовы кода операции
ldstrldstrstringstring"Му other string"Так что же в точности из всего этого следует? Выражаясь кратко, класс
stringstringОднако когда строится приложение, в котором текстовые данные будут часто изменяться (подобное текстовому процессору), то представление обрабатываемых текстовых данных с применением объектов
stringИспользование типа System.Text.StringBuilder
С учетом того, что тип
stringSystem.TextStringBuilderSystem.StringStringBuilderStringBuilder- Предыдущая
- 62/642
- Следующая
