TA貢獻1770條經驗 獲得超3個贊
其實只是”看上去“像多重繼承而已。因為擴展方法其實是靜態方法,你一定在項目中寫過這樣的靜態方法:
public static void SomeMethod(ISomeInterface interface){ //}
public static void SomeMethod(ISomeInterface interface){
//}
在調用的時候還要寫上全靜態方法所在的類,即這樣調用SomeClass.SomeMethod(interface)
而擴展方法把這一切簡化為:SomeInterface.SomeMethod(),看上去似乎為所有實現了ISomeInterface接口的類提供了SomeMethod的默認實現,但其實這只是個靜態方法,是編譯器的語法糖。也就是說擴展方法是C#的特性,而不是IL的,更不是CLR的。
因此,只能說擴展方法在某種程度上提供了多重繼承的一種實現方式,但不能說著違背了不能多重繼承的原則
TA貢獻1830條經驗 獲得超3個贊
這個應該是不一樣的,如果是你說的這樣子的話,個人覺得那C#就違背了他設計的初衷了,那又回到C++的時代了。
舉報
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號-11 京公網安備11010802030151號
購課補貼聯系客服咨詢優惠詳情
慕課網APP您的移動學習伙伴
掃描二維碼關注慕課網微信公眾號