您的位置:首页 > 编程语言 > C#

C#中显/隐式实现接口及其访问方法

2012-07-16 13:49 411 查看
---------------------- Windows Phone 7手机开发、.Net培训、期待与您交流! ----------------------

来源:/article/5658352.html

1.隐式实现的接口

1interface IControl

2{

3 void Paint();

4}

5public class EditBox : IControl

6{

7 public void Paint()

8 {

9 Console.WriteLine("Pain method is called!");

10 }

11}

12class Test

13{

14 static void Main()

15 {

16 EditBox editbox = new EditBox();

17 editbox.Paint();

18 ((IControl)editbox).Paint();

19 Console.ReadKey();

20 }

21}

结果:


Pain method is called!

Pain method is called!

说明:从实例中我们可以看到用隐式实现的接口既可以通过类来访问,也可以通过接口来访问!


2.显式实现的接口

1interface IControl

2{

3 void Paint();

4}

5public class EditBox : IControl

6{

7 void IControl.Paint()

8 {

9 Console.WriteLine("IControl.Pain method is called!");

10 }

11}

12class Test

13{

14 static void Main()

15 {

16 EditBox editbox = new EditBox();

17 //editbox.Paint();//通过类访问会出错

18 ((IControl)editbox).Paint();

19 Console.ReadKey();

20 }

21}

结果:


1IControl.Pain method is called!

说明:从实例中我们可以看到用显式实现的接口只能通过接口来访问,如果试图通过类来访问会出错:““ConsoleApplication1.EditBox”并不包含“Paint”的定义。”


3.同时用显/隐式实现接口会怎么样?

1interface IControl

2{

3 void Paint();

4}

5public class EditBox : IControl

6{

7 void IControl.Paint()

8 {

9 Console.WriteLine("IControl.Pain method is called!");

10 }

11 public void Paint()

12 {

13 Console.WriteLine("Pain method is called!");

14 }

15}

16class Test

17{

18 static void Main()

19 {

20 EditBox editbox = new EditBox();

21 editbox.Paint();

22 ((IControl)editbox).Paint();

23 Console.ReadKey();

24 }

25}

结果:


Pain method is called!

IControl.Pain method is called!

说明:当同时用显/隐式实现接口时,显式才是真正的接口实现方法!


4.结论

在多数情况下,我们都是用隐式来实现接口,此时既可以通过类来访问,又可以通过接口来访问,而通过显式实现的接口则只能通过接口来访问,总结一下就是:当显式实现方式存在时,隐式实现方式就失效了。但这不能表示显式实现方式就不好,当一个类实现的多个接口中具有相同的方法时,用显式方式来专门实现某个接口的方法时就显得非常有用!

5.参考文章

[1] C#中的接口:http://zhenyulu.cnblogs.com/archive/2006/04/18/377705.html

---------------------- Windows Phone 7手机开发、.Net培训、期待与您交流! ----------------------
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: