猿问

关于扩展方法扩展接口

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

 

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

 

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

 

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

 

 

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


慕标琳琳
浏览 584回答 2
2回答

德玛西亚99

其实只是”看上去“像多重继承而已。因为扩展方法其实是静态方法,你一定在项目中写过这样的静态方法:public static void SomeMethod(ISomeInterface interface){   //}在调用的时候还要写上全静态方法所在的类,即这样调用SomeClass.SomeMethod(interface)而扩展方法把这一切简化为:SomeInterface.SomeMethod(),看上去似乎为所有实现了ISomeInterface接口的类提供了SomeMethod的默认实现,但其实这只是个静态方法,是编译器的语法糖。也就是说扩展方法是C#的特性,而不是IL的,更不是CLR的。因此,只能说扩展方法在某种程度上提供了多重继承的一种实现方式,但不能说着违背了不能多重继承的原则

牛魔王的故事

这个应该是不一样的,如果是你说的这样子的话,个人觉得那C#就违背了他设计的初衷了,那又回到C++的时代了。
随时随地看视频慕课网APP
我要回答