Код: Выделить всё
abstract class A
{
public virtual void M() { }
}
sealed class B : A
{ }
internal class C
{
private readonly A _a = new B();
public void Trigger()
{
// This performs a virtual call because
// _a is defined as an abstract class.
_a.M();
}
}
< /code>
и исправленный код: < /p>
abstract class A
{
public virtual void M() { }
}
sealed class B : A
{ }
internal class C
{
private readonly B _b = new B();
public void Trigger()
{
_b.M();
}
}
< /code>
Но в обоих случаях Callsite в IL выглядит как: < /p>
IL_0006: callvirt instance void A::M() /* 06000011 */
Подробнее здесь: https://stackoverflow.com/questions/796 ... r-improved