继承中的完全限定接口名称

时间:2016-07-06 10:00:34

标签: c#

有2个接口定义为:

interface calc1
{
    int add(int a, int b);
}
interface calc2
{
    int add(int x, int y);
}

一个类将这两个接口实现为:

class Calculation : calc1, calc2
{
    public int result1;
    public virtual int add(int a, int b)
    {
        return result1 = a + b;
    }        
}

一切正常。但是当我将类定义更改为:

class Calculation : calc1, calc2
{
    public int result1;
    public int result2;
    public virtual int calc1.add(int a, int b)
    {
        return result1 = a + b;
    }

    public int calc2.add(int x, int y)
    {
        return result2 = x - y;
    }
}

我看到了错误:

The modifier 'virtual' is not valid for this item

The modifier 'public' is not valid for this item

后一类代码有什么问题?

1 个答案:

答案 0 :(得分:2)

显式接口实现不能具有访问修饰符,因为它们仅在将接口用作类型时可见。制作public毫无意义。

此外,您无法从显式接口实现派生,因此virtual也无用。编译器知道并打破它。