Как работает передача строки в метод? - C#

Узнай цену своей работы

Формулировка задачи:

Вот код.
Листинг программы
  1. using System;
  2. class CountWordInText
  3. {
  4. public static void Main()
  5. {
  6. CountOfWord ob1 = new CountOfWord();
  7. string Text = "Привет Привет Привет Привет";
  8. string word = "Приве";
  9. int nums = ob1.NumOfWords(Text, word);
  10. Console.WriteLine(nums);
  11. Console.WriteLine(Text); // Результат: Привет Привет Привет Привет
  12. }
  13. }
Листинг программы
  1. using System;
  2. class CountOfWord
  3. {
  4. public int NumOfWords(string Text, string word)
  5. {
  6. int numbersWords = 0;
  7. bool findWord;
  8. if (Text.Length <= 0)
  9. {
  10. Console.WriteLine("Текст не содержит слов");
  11. return 0;
  12. }
  13. while (findWord = Text.Contains(word))
  14. {
  15. int indexWord = Text.IndexOf(word);
  16. Text = Text.Remove(indexWord, word.Length);
  17. numbersWords++;
  18. }
  19. return numbersWords;
  20. }
  21. }
Помогите уяснить как в этом случае работает передача строки в метод. Я правильно понимаю что параметр Text хранит ссылку на строку?, однако когда я начинаю "вносить изминения т.е. Remove()", создается новый обьект типа String (при каждой итерации) и в него перезаписывается результат? Потом вся эта куча обьектов удаляется сборщиком мусора (с его тонкостями увы еще не знаком). В результате я понимаю почему в конце мне все равно выводит одну и ту же строку. Т.е. я понимаю что это из за того что строки неизменны, но тогда не ясно каким образом все это передается в метод. Протеворечие вызывает то, что в метод в моем понимании передается ссылка на обьект, но в то же время строка же неизменна. В общем какая-то неясность образовалась Обьясните пожалуйста.

Решение задачи: «Как работает передача строки в метод?»

textual
Листинг программы
  1.  class Program
  2.     {
  3.         static void Main(string[] args)
  4.         {
  5.             test ob1 = new test(1, 2);
  6.             test ob2 = new test(3, 4);
  7.             ob1.show();
  8.             ob2.show();
  9.             test ob3 = ob1;
  10.             ob1 = ob2;
  11.             ob2 = ob3;
  12.             ob1.show();
  13.             ob2.show();
  14.         }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

8   голосов , оценка 3.5 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы