重慶分公司,新征程啟航
為企業提供網站建設、域名注冊、服務器等服務
為企業提供網站建設、域名注冊、服務器等服務
擴展方法使您能夠向現有類型“添加”方法,而無需創建新的派生類型、重新編譯或以其他方式修改原始類型。 擴展方法是一種特殊的靜態方法,但可以像擴展類型上的實例方法一樣進行調用。 對于用 C# 和 Visual Basic 編寫的客戶端代碼,調用擴展方法與調用在類型中實際定義的方法之間沒有明顯的差異。 --- 摘自MSDN
成都創新互聯公司自2013年起,是專業互聯網技術服務公司,擁有項目成都網站設計、做網站網站策劃,項目實施與項目整合能力。我們以讓每一個夢想脫穎而出為使命,1280元羅定做網站,已為上家服務,為羅定各地企業和個人服務,聯系電話:028-86922220下面我們自己定義一個A類和Program類來為string擴展方法
public static class A { public static int Test(this string s) { return 1; } public static int IndexOf(this string s, char c) { return 1; } } class Program { static void Main(string[] args) { int a = A.Test("sds"); int c = "sds".Test(); Console.WriteLine(a); Console.WriteLine(c); int b = A.IndexOf("asdfg", 'd'); Console.WriteLine(b); int d = "asdfg".IndexOf('d'); Console.WriteLine(d); } }
擴展方法很簡單,就是在參數類型前面加this,就為當前參數的類型增加了擴展方法,但是必須在靜態類中聲明靜態方法(想要擴展的方法).以上例子為string類擴展了Test方法和indexof方法(string中有同名方法),運行結果為1 1 1 2,由此可以推論 擴展的方法如果和string類中的方法重名,則會執行string類中的方法,而不會執行擴展方法,再讓我們來看看反編譯的結果
由此更可以確定 執行的是string中的方法,再看上面的兩個調用,可以觀察到調用的都是A類中的靜態方法,和string類并無多大關聯,也可以得出擴展方法是不能調用string中的私有變量和方法,所以 string類也不用重新編譯.
對擴展類總結下:
擴展方法不改變原有被擴展類代碼,不用重新編譯被擴展類.
不能訪問被擴展類的私有成員,當和同名方法重名時優先執行原方法
引用一個類庫,但是我們沒有該類庫的源代碼,那么我們可以使用擴展方法 ,使用擴展方法進行類的擴展。
第一次寫博文,望大神多多指點.
另外有需要云服務器可以了解下創新互聯scvps.cn,海內外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、高防服務器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業上云的綜合解決方案,具有“安全穩定、簡單易用、服務可用性高、性價比高”等特點與優勢,專為企業上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。