---恢復內容開始---
今天記錄一下自己對擴充套件方法的理解,擴充套件方法就是實現某種功能但是在原有的類或程式集中又不存在這種功能實現的方法或者封裝,繼而衍生出擴充套件方法。但是新建乙個類來封裝實現這種功能的方法也可以達到目的而且使用繼承機制也可以實現,為何有衍生擴充套件方法呢?
第一種方式是比較通用的一種方式,也是通常情況下使用最多的,但和擴充套件方法比較來說,**的可讀性不如擴充套件方法。
繼承的方式是乙個很好的擴充套件方案,但有時不一定是完美的,比如:a. 每次繼承都會產生新類,且使用時需要進行相應的強制轉換(string=>mystring),b. 有些類本身設計為密封類,是不允許被繼承的,如上所使用的例子string是不允許被繼承的,所以第二種方案是不可行的。這時,第三種方案擴充套件方法就派上用場了。
所以擴充套件方法登場可以完美的解決以上兩種機制所產生或者遺留的問題和不足,進一步了解擴充套件方法的用法吧!
宣告擴充套件方法必須符合以下特性:
該方法必須宣告在靜態類中且方法型別為靜態方法
方法的第乙個引數型別是可擴充套件的型別
第乙個引數需加this關鍵字
寫個demo來看看:
namespace然後呼叫方式:zhengze
return
max;}}
}
namespace這樣我的乙個簡單的擴充套件方法就完成了。如何識別乙個擴充套件方法:zhengze
; console.writeline(arr.getadd());}}
}
第乙個引數型別為this的方法
方法圖示標有下標箭頭
以上內容有部分來自於園友部落格。本章內容只是供自己理解複習加深記憶,有不足的地方請指出!---獻給第二次的自己
---恢復內容結束---
C 擴充套件方法的理解
c 擴充套件方法的理解 擴充套件方法使您能夠向現有型別 新增 方法,而無需建立新的派生型別 重新編譯或以其他方式修改原始型別。這是msdn上說的,也就是你可以對string,int,datarow,datatable等這些型別的基礎上增加乙個或多個方法,使用時不需要去修改或編譯型別本身的 先做個例子...
C 擴充套件方法的理解
擴充套件方法使您能夠向現有型別 新增 方法,而無需建立新的派生型別 重新編譯或以其他方式修改原始型別。這是msdn上說的,也就是你可以對string,int,datarow,datatable等這些型別的基礎上增加乙個或多個方法,使用時不需要去修改或編譯型別本身的 先做個例子吧,以string為例,...
c 擴充套件方法的理解
擴充套件方法是靜態方法,是類的一部分,但是實際上沒有放在類的源 中。擴充套件方法所在的類也必須被宣告為static c 只支援擴充套件方法,不支援擴充套件屬性 擴充套件事件等。擴充套件方法的第乙個引數是要擴充套件的型別,放在this關鍵字的後面,告訴編譯期這個方法是money型別的一部分。在擴充套件...