程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> C#3.0中的擴展方法

C#3.0中的擴展方法

編輯:C#入門知識

在實際應用中,開發者完成代碼的編譯後,除非重新編譯更改後的代碼,否則開發者很難在原有代碼中添加新的功能.

    在C#3.0中,提供了一個擴展方法的新特性,可以使得開發者在編譯後的程序集裡邊添加相關的方法,從而很容易地擴展原有的功能.

1、擴展方法的定義

定義擴展方法時,首先這個擴展方法要被定義在一個靜態類中(程序集加載時自動加載),因此這個擴展方法也必須是一個靜態方法。其次,在擴展方法的參數列表中,需要在第一個參數類型的前面添加關鍵字this作為修飾符,而緊跟其後的就是擴展類的名稱。如下所示:

代碼:擴展方法的定義

    static class MyExtensions
    {
        public static string  GetAssemblyName(this object obj)
        { 
            return obj.GetType().Name;
        }
    }

在上述代碼中,定義了一個靜態類MyExtension,其中定義了一個擴展方法GetAssemblyName()。在該方法的參數列表中,使用了關鍵字this來修飾object類型,將擴展方法與object相關聯。因此,對於任何object對象和繼承了object類的類,都可以使用GetAssemblyName()方法,從而擴展了object的方法。

2、擴展方法的使用

    使用擴展方法,既可以調用關聯類型實例化對象的擴展方法,也可以直接調用靜態類中的擴展方法,其中的方法參數輸入關聯類型。

代碼: 實例化對象的擴展方法

 

        static void Main(string[] args)
        {
            object obj = new object();
            obj.GetAssemblyName();
        }

在代碼中,定義了一個object類型的參數obj,並調用obj類型的擴展方法GetAssemblyName,獲取Assembly的名稱.

當書寫代碼時,在VS環境中,開發者可以利用只能感知功能,比較容易地選擇擴展方法.如下圖所示:

擴展方法
 

此外還可以針對泛型類型添加擴展方法,這樣開發者就可以在制定的泛型類中使用擴展方法。俺還不是很理解泛型,暫時不顯擺了。

    

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved