Dlaczego „ref” i „out” nie wspierają polimorfizmu?
Wykonaj następujące czynności:
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) {}
}
Dlaczego występuje powyższy błąd podczas kompilacji? Dzieje się tak z obydwomaref
iout
argumenty.