首页 新闻 会员 周边 捐助

关于扩展方法扩展接口

0
[已解决问题] 解决于 2010-03-11 22:23

接口中只定义方法,不是实现它

 

但是用扩展方法扩展接口后可以把方法实例化

 

这样,接口又可以多重继承

 

这是不是有点像类的多重继承?

 

 

这不是违背了c#中类不能多重继承的原则吗?

Dozer的主页 Dozer | 初学一级 | 园豆:30
提问于:2010-03-11 13:14
< >
分享
最佳答案
0

其实只是”看上去“像多重继承而已。因为扩展方法其实是静态方法,你一定在项目中写过这样的静态方法:

public static void SomeMethod(ISomeInterface interface)
{
//
}

在调用的时候还要写上全静态方法所在的类,即这样调用SomeClass.SomeMethod(interface)

而扩展方法把这一切简化为:SomeInterface.SomeMethod(),看上去似乎为所有实现了ISomeInterface接口的类提供了SomeMethod的默认实现,但其实这只是个静态方法,是编译器的语法糖。也就是说扩展方法是C#的特性,而不是IL的,更不是CLR的。

因此,只能说扩展方法在某种程度上提供了多重继承的一种实现方式,但不能说着违背了不能多重继承的原则。

 

麒麟.NET | 老鸟四级 |园豆:3614 | 2010-03-11 22:20
解释的太好了! 一下子就明白了~
Dozer | 园豆:30 (初学一级) | 2010-03-11 22:29
@Dozer:学习了!O(∩_∩)O~
西越泽 | 园豆:10775 (专家六级) | 2010-03-11 22:29
其他回答(1)
0

这个应该是不一样的,如果是你说的这样子的话,个人觉得那C#就违背了他设计的初衷了,那又回到C++的时代了。这里有一文C#3.0 中使用扩展方法来扩展接口 做了说明,可以参考下。

西越泽 | 园豆:10775 (专家六级) | 2010-03-11 13:30
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册