C#2.0中的接口的一些变化

觉得在C#2.0中接口的变化主要为了防止当一个类实现多个接口时,有些接口成员不但名称相同而且签名也相同而惹起的麻烦(纯属推测,以下证明)。
如例,有两个接口:
IGui1
{
 void Print();
}

IGui2
{
 void Print()
}
在1.0中实现接口是这样的:
public class WindowGui:IGui1,IGui2
{
 public void Print(){Console.Write("print...");}
}
问题出在此:IGui1和IGui2的Print方法名和签名都相同,如果当IGui1和IGui2的Print()的作用不相同时,那么在C#1.0中必须必修改代码(用Adapter模式??)

在C#2.0中实现接口有如下变化:
public class WindowGui:IGui1,IGui2
{
 void IGui1.Print(){Console.Write("GUI1 print...");}
 void IGui2.Print(){Console.Write("GUI2 print...");}
}
很明显,实现接口的时必须指明实现哪个接口的成员,无论是只实现一个接口还是多个接口,如:IGui1.Print()。但请注意:在C#1.0中实现方法时一定要在前边加上public,如上面public void Print(), 在C#2.0中是不能加public的。

调用接口的变化:
在C#1.0中有两种方式:
1:WindowGui gui = new WindowGui();gui.Print()。
2:IGui1 gui = new WindowGui(); gui.Print();
这证明我前面的推测,无论是哪种调用方式,当有接口的成员名和签名相同时,就不知道是这个方法是属于哪个接口的。
在C#2.0中:只能采取C#1.1中的第二个方法。
IGui1 gui1 = new WindowGui();
IGui2 gui2 = new WindowGui();
gui1.Print();
gui2.Print();
这个程序很清淅,因为已指明实现了哪个接口的成员。注意:在C#2.0中不能再像C#1.0那样中可以通过对象调用接口成员
WindowGui gui = new WindowGui();
gui.Print();
很简单,想一想,gui.Print()是调用IGui1.Print()还是调用IGui2.Print()呢?
郑重声明:本文中参考了MSDN。
这只是我一些粗浅的看法,请大家多多指点!!

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值