接口中只定义方法,不是实现它 但是用扩展方法扩展接口后可以把方法实例化 这样,接口又可以多重继承 这是不是有点像类的多重继承? 这不是违背了c#中类不能多重继承的原则吗?
2 回答
德玛西亚99
TA贡献1770条经验 获得超3个赞
其实只是”看上去“像多重继承而已。因为扩展方法其实是静态方法,你一定在项目中写过这样的静态方法:
public static void SomeMethod(ISomeInterface interface)
{//
}
在调用的时候还要写上全静态方法所在的类,即这样调用SomeClass.SomeMethod(interface)
而扩展方法把这一切简化为:SomeInterface.SomeMethod(),看上去似乎为所有实现了ISomeInterface接口的类提供了SomeMethod的默认实现,但其实这只是个静态方法,是编译器的语法糖。也就是说扩展方法是C#的特性,而不是IL的,更不是CLR的。
因此,只能说扩展方法在某种程度上提供了多重继承的一种实现方式,但不能说着违背了不能多重继承的原则
- 2 回答
- 0 关注
- 583 浏览
添加回答
举报
0/150
提交
取消