当我们有多个具有相同方法名称的继承时,引用的接口是什么。在c#中

时间:2014-07-26 13:27:48

标签: c# .net oop

在以下代码中,方法a.x()引用了接口I1I2

class Program
{
    static void Main(string[] args)
    {
        A a = new A();

        a.x();
        Console.ReadLine();
    }
}

class A:I1,I2
{

    public void x()
    {
        Console.WriteLine("hello");
    }
}
interface I1
{
    void x();
}

interface I2
{
    void x();
}

3 个答案:

答案 0 :(得分:2)

a.x()指的是接口I1I2

答案 1 :(得分:0)

由于它们具有相同的签名,a.x()满足两个接口。

如果您需要不同的实现,可以通过在接口名称前添加前缀来指定实现所适用的接口:

class A : I1, I2
{

    public void I1.x()
    {
        Console.WriteLine("hello I1");
    }

    public void I2.x()
    {
        Console.WriteLine("hello I2");
    }
}

答案 2 :(得分:0)

这不是真正的多重继承,因为你没有继承行为。如果从多个类继承,则会有所不同(这在C#中是不可能的)。您只需在此处实现接口,并且两个接口都得到满足。