c# explixit interface implementation
某个类要实现两个包含相同方法名的接口, 应该如何实现这两个方法?
1 namespace explicitinterfaceimplementation 2 { 3 class program : iprintone,iprinttwo, iprintthree 4 { 5 static void main(string[] args) 6 { 7 program p = new program(); 8 p.print(); 9 (p as iprinttwo).print(); 10 ((iprintthree)p).print(); 11 } 12 13 14 15 public void print() 16 { 17 console.writeline("print one interface"); 18 } 19 // explicitly implement iprinttwo 20 void iprinttwo.print() 21 { 22 console.writeline("print two interface"); 23 } 24 // explicitly implement iprintthree 25 string iprintthree.print() 26 { 27 console.writeline("print two interface"); 28 return "asd"; 29 } 30 } 31 32 interface iprintone 33 { 34 void print(); 35 } 36 37 interface iprinttwo 38 { 39 void print(); 40 } 41 42 interface iprintthree 43 { 44 string print(); 45 } 46 }
以上demo中共有3个拥有相同方法名的interface,program类继承了这三个接口,使用explicit interface implementation实现iprinttwo和iprintthree接口的方法
显示实现的接口方法前不能加access modifier,且调用该方法时需将program类转换位接口才能调用, 不能直接通过类引用调用。
when a class explicitly implements an interface member, the interface member can no longer be accessed thru class reference variable, but only thru the interface reference variable.
以上demo的运行结果:
print one interface
print two interface
print three interface
黄山市民网:https://www.huangshanshimin.com/