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

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

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

Вот код.
using System;
 
class CountWordInText
{
    public static void Main()
    {
        CountOfWord ob1 = new CountOfWord();
        string Text = "Привет Привет Привет Привет";
        string word = "Приве";
        int nums = ob1.NumOfWords(Text, word);
        Console.WriteLine(nums);
        Console.WriteLine(Text); // Результат: Привет Привет Привет Привет
    }
}
using System;
 
class CountOfWord 
{
 
    public int NumOfWords(string Text, string word) 
    {
        int numbersWords = 0;
        bool findWord;
 
        if (Text.Length <= 0) 
        {
            Console.WriteLine("Текст не содержит слов");
            return 0;
        }
 
        while (findWord = Text.Contains(word))
        {
            int indexWord = Text.IndexOf(word);
            Text = Text.Remove(indexWord, word.Length);
            numbersWords++;
        }
 
        return numbersWords;
    }
}
Помогите уяснить как в этом случае работает передача строки в метод. Я правильно понимаю что параметр Text хранит ссылку на строку?, однако когда я начинаю "вносить изминения т.е. Remove()", создается новый обьект типа String (при каждой итерации) и в него перезаписывается результат? Потом вся эта куча обьектов удаляется сборщиком мусора (с его тонкостями увы еще не знаком). В результате я понимаю почему в конце мне все равно выводит одну и ту же строку. Т.е. я понимаю что это из за того что строки неизменны, но тогда не ясно каким образом все это передается в метод. Протеворечие вызывает то, что в метод в моем понимании передается ссылка на обьект, но в то же время строка же неизменна. В общем какая-то неясность образовалась Обьясните пожалуйста.

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

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

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


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

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

8   голосов , оценка 3.5 из 5
Похожие ответы