¿Por qué 'ref' y 'out' no soportan el polimorfismo?

Toma lo siguiente:

class A {}

class B : A {}

class C
{
    C()
    {
        var b = new B();
        Foo(b);
        Foo2(ref b); // <= compile-time error: 
                     // "The 'ref' argument doesn't match the parameter type"
    }

    void Foo(A a) {}

    void Foo2(ref A a) {}  
}

¿Por qué se produce el error de compilación anterior? Esto sucede con ambosref yout argumentos

Respuestas a la pregunta(10)

Su respuesta a la pregunta