¿Tipo de referencia de cadena C #?

Sé que "cadena" en C # es un tipo de referencia. Esto está en MSDN. Sin embargo, este código no funciona como debería entonces:

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";
    }
}

La salida debe ser "antes de pasar" "después de pasar", ya que estoy pasando la cadena como parámetro y es un tipo de referencia, la segunda declaración de salida debe reconocer que el texto cambió en el método TestI. Sin embargo, recibo "antes de pasar" "antes de pasar", lo que parece que se pasa por valor y no por ref. Entiendo que las cuerdas son inmutables, pero no veo cómo eso explicaría lo que está sucediendo aquí. ¿Qué me estoy perdiendo? Gracias.

Respuestas a la pregunta(10)

Su respuesta a la pregunta