Implicit <> Explicit interface
本问题已经有最佳答案,请猛点这里访问。
Possible Duplicates:
C#: Interfaces - Implicit and Explicit implementation
implicit vs explicit interface implementation
你好
有人能解释一下隐式和显式接口之间的区别吗?
谢谢!
当您明确地实现接口时,只有当对象被引用为接口时,该接口上的方法才可见:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | public interface IFoo { void Bar(); } public interface IWhatever { void Method(); } public class MyClass : IFoo, IWhatever { public void IFoo.Bar() //Explicit implementation { } public void Method() //standard implementation { } } |
如果代码中的某个地方引用了此对象:
1 2 3 4 5 |
对于标准实现,无论您如何引用对象:
1 2 |
隐式接口实现是指具有与接口相同签名的方法。
显式接口实现是显式声明方法属于哪个接口的地方。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | interface I1 { void implicitExample(); } interface I2 { void explicitExample(); } class C : I1, I2 { void implicitExample() { Console.WriteLine("I1.implicitExample()"); } void I2.explicitExample() { Console.WriteLine("I2.explicitExample()"); } } |
msdn:隐式和显式接口实现
显式只是指您指定接口,隐式是指您不指定。
例如:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | interface A { void A(); } interface B { void A(); } class Imp : A { public void A() // Implicit interface implementation { } } class Imp2 : A, B { public void A.A() // Explicit interface implementation { } public void B.A() // Explicit interface implementation { } } |
另外,如果您想知道显式实现存在的原因,那是因为您可以从多个接口实现相同的方法(名称和签名);然后,如果您需要不同的功能,或者只是返回类型不同,则不能通过简单的重载来实现这一点。然后您必须使用显式实现。一个例子是,