Пока на автомате не привык, нужно запомнить:
Например, если выполнить следующий фрагмент программы:
string a ="кол около колокола"; Console.WriteLine("Строка а: {0}", a); a.Remove(0,4); Console.WriteLine("Строка a: {0}", a);
Результат работы программы:
Cтрока a: кол около колокола Cтрока a: кол около колокола
то компилятор никаких сообщений не выдаст, но мы не увидим никаких преобразований со строкой.
А вот в результате работы следующего фрагмента программы мы получим следующий результат:
string a ="кол около колокола"; Console.WriteLine("Cтрока a: {0}", a); string b=a.Remove(0,4); Console.WriteLine("Cтрока a: {0}", a); Console.WriteLine("Cтрока b: {0}", b);
Результат работы программы:
Строка а: кол около колокола Строка а: кол около колокола Строка b: около колокола
Результат выполнения метода Remove, можно записать и в саму переменную a:
string a ="кол около колокола"; Console.WriteLine("Cтрока a: {0}", a); а=a.Remove(0,4); Console.WriteLine("Cтрока a: {0}", a);
Результат работы программы:
Строка а: кол около колокола Строка а: около колокола
В этом случае будет потеряна ссылка на исходное строковое значение «кол около колокола», хотя оно и будет занимать память. Освободить занятую память сможет только сборщик мусора.
Рассмотрим следующий фрагмент программы:
string a=""; for (int i = 1; i <= 100; i++) { a +="!"; } Console.WriteLine(a);
В этом случае в памяти компьютера будет сформировано 100 различных строк вида:
!
!!
!!!
…
!!!...!!
И только на последнюю из них будет ссылаться переменная а. Ссылки на все остальные строчки будут потеряны, но как и в предыдущем примере эти строки будут храниться в памяти компьютера и засорять ее. Бороться с таким засорением придется сборщику мусора, что будет сказываться на производительности программы.
- C#: Сравнить два массива - 12.12.2024
- EVE-Online: Фильтры каналов - 23.11.2024
- Не приходит СМС для авторизации на сайте Госуслуги - 01.11.2024