为了账号安全,请及时绑定邮箱和手机立即绑定

关于扩展方法扩展接口

关于扩展方法扩展接口

慕标琳琳 2018-10-24 05:06:54
接口中只定义方法,不是实现它 但是用扩展方法扩展接口后可以把方法实例化 这样,接口又可以多重继承 这是不是有点像类的多重继承?  这不是违背了c#中类不能多重继承的原则吗?
查看完整描述

2 回答

?
德玛西亚99

TA贡献1770条经验 获得超3个赞

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

public static void SomeMethod(ISomeInterface interface)
{

   //
}

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

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

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


查看完整回答
反对 回复 2018-10-25
?
牛魔王的故事

TA贡献1830条经验 获得超3个赞

这个应该是不一样的,如果是你说的这样子的话,个人觉得那C#就违背了他设计的初衷了,那又回到C++的时代了。

查看完整回答
反对 回复 2018-10-25
  • 2 回答
  • 0 关注
  • 583 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信