Typ referencyjny łańcucha C #?

Wiem, że „ciąg” w C # jest typem odniesienia. To jest w MSDN. Jednak ten kod nie działa tak jak powinien:

class Test
{
    public static void Main()
    {
        string test = "before passing";
        Console.WriteLine(test);
        TestI(test);
        Console.WriteLine(test);
    }

    public static void TestI(string test)
    {
        test = "after passing";
    }
}

Wyjście powinno być „przed przekazaniem” „po przejściu”, ponieważ przekazuję ciąg jako parametr i jako typ odniesienia, druga instrukcja wyjścia powinna rozpoznać, że tekst zmienił się w metodzie TestI. Otrzymuję jednak „przed przekazaniem” „przed przekazaniem”, co sprawia, że ​​wydaje się, że jest przekazywana przez wartość nie przez ref. Rozumiem, że ciągi są niezmienne, ale nie rozumiem, jak to wyjaśniłoby, co tu się dzieje. czego mi brakuje? Dzięki.

questionAnswers(10)

yourAnswerToTheQuestion