如何使用虚方法显式实现接口?

Jad*_*ias 5 .net c# inheritance virtual-functions interface

我不能这样做

interface InterfaceA
{
    void MethodA();
}

class ClassA : InterfaceA
{
    virtual void InterfaceA.MethodA()
    // Error: The modifier 'virtual' is not valid for this item
    {
    }
}
Run Code Online (Sandbox Code Playgroud)

以下工作地点

class ClassA : InterfaceA
{
    public virtual void MethodA()
    {
    }
}
Run Code Online (Sandbox Code Playgroud)

为什么?如何规避这个?

7wp*_*7wp 8

我认为这是因为当一个成员被显式实现时,它不能通过类实例访问,而只能通过接口的实例访问.

因此,在这种情况下,制作"虚拟"的东西确实没有意义,因为虚拟意味着您打算在继承的类中覆盖它.明确地 实现接口使其成为虚拟接口将是矛盾的.这也可能是编译器不允许这样做的原因.

为了解决这个问题,我认为csharptest.net菲利普的回答听起来像是可以解决问题