1

如何引用提供相同方法的接口的方法定义,并且我想在类中定义该函数。例如我有两个接口

 public interface i1
{
    void show();

}

public interface i2
{
    void show();
}

假设一个类 ClassA 实现了这些接口。他们会在定义上发生冲突吗?或者我应该如何定义它。

4

2 回答 2

2

只有一种情况是可能发生冲突的——当您需要在一个类中拥有多个具有相同签名的方法时(方法名称和参数相同)。通常你可以只重命名一种方法来解决这个冲突。但是当你实现接口时,你不能改变实现方法的签名。如果多个接口具有相同签名的方法,并且您需要该方法的不同实现,则使用显式接口实现来解决冲突:

public class A : i1, i2
{
   void i1.show() { ... }
   void i2.show() { ... }
}

用法:

A a = new A();
i1 x = (i1)a;
x.show(); // will call i1.show() implementation

正如@ryadavilli 所说,仅当您需要针对不同接口的不同实现时才需要显式实现。否则,一种show()方法将满足两个接口。如果只有一种方法,则没有冲突。

顺便说一句,在 C# 中,我们使用 PascalCase 来命名方法。

于 2012-11-18T10:03:12.153 回答
1

你可以这样做

class A : i1, i2
{
    void i1.show()
    {
        Console.WriteLine("1");
    }

    void i2.show()
    {
        Console.WriteLine("2");
    }
}

如果您只想为两个 show() 提供一个实现

class A : i1, i2
{
    public void show()
    {
        Console.WriteLine("common method.");
    }
}
于 2012-11-18T10:03:38.570 回答