如何引用提供相同方法的接口的方法定义,并且我想在类中定义该函数。例如我有两个接口
public interface i1
{
void show();
}
public interface i2
{
void show();
}
假设一个类 ClassA 实现了这些接口。他们会在定义上发生冲突吗?或者我应该如何定义它。
如何引用提供相同方法的接口的方法定义,并且我想在类中定义该函数。例如我有两个接口
public interface i1
{
void show();
}
public interface i2
{
void show();
}
假设一个类 ClassA 实现了这些接口。他们会在定义上发生冲突吗?或者我应该如何定义它。
只有一种情况是可能发生冲突的——当您需要在一个类中拥有多个具有相同签名的方法时(方法名称和参数相同)。通常你可以只重命名一种方法来解决这个冲突。但是当你实现接口时,你不能改变实现方法的签名。如果多个接口具有相同签名的方法,并且您需要该方法的不同实现,则使用显式接口实现来解决冲突:
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 来命名方法。
你可以这样做
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.");
}
}