从多个接口继承相同的方法

时间:2015-09-17 06:07:31

标签: c# inheritance

我们知道多个(接口)继承是允许在c#但是,我想知道是否有可能是两个接口 示例:

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

具有相同类型和相同类型参数的相同方法名称

会在上面的类中继承吗?

class Calculation : calc1, calc2
{
    public int result1;
    public int addsub(int a, int b)
    {
        return result1 = a + b;
    }
    public int result2;
    public int addsub(int x, int y)
    {
        return result2= a - b;
    }
}

如果是,那么将调用哪个接口方法。

提前致谢。

1 个答案:

答案 0 :(得分:10)

你不能像这样重载方法,不 - 它们具有相同的签名。您的选择是:

  • 使用一个实现,将由两个接口
  • 调用
  • 对一个或两个方法使用显式接口实现,例如

    int calc2.addsub(int x, int y)
    {
        return result2 = a - b;
    }
    

    如果对这两种方法都这样做, 方法都不能在Calculation类型的引用上调用;相反,在调用方法之前,您必须转换为一个接口或另一个接口,包括在类中。例如:

    public void ShowBoth()
    {
        Console.WriteLine(((calc1)this).addsub(5, 3)); // 8
        Console.WriteLine(((calc2)this).addsub(5, 3)); // 2
    }