C# — 擴充方法的應用(Extension Methods)

來源:互聯網
上載者:User

當你有下面這樣一個需求的時候,擴充方法就會起到作用:在項目中,類A需要添加功能,我們想到的就是在類A中添加公用方法,這個顯而易見肯定可以,但是由於某種原因,你不能修改類A本身的代碼,但是確實又需要增加功能到類A中去,怎麼辦? 這個時候擴充方法(Extension Methods)就會協助你完成上述功能了。現在舉例如下:

類A:簡單起見,類A中只有一個自己的方法。

using System;namespace TestApp.Method{    public class Test    {        public void TestMethod()        {            Console.WriteLine("public void TestMethod()");        }    }}

現在我需要讓類A添加一個方法,但是又不能修改類A,好,那我們就添加一個擴充方法(Extension Methods)如下:

using System;using TestApp.Method;namespace TestApp.ExtensionMethod{    public static class ExtendClass    {        public static void ExtendMethod(this Test test)        {            Console.WriteLine("test.ExtendMethod()");        }    }}

其實,擴充方法(Extension Methods)當然需要一個類封裝,所以我們必須得有一個類,請注意,這個類必須是靜態類,另外擴充方法(Extension Methods)必須也是靜態方法,方法的參數中必須要有被擴充類作為其中一個參數,此參數前面用this關鍵字修飾。

好了,這樣我們的擴充就算完成了,下面我們就可以通過類A的執行個體來調用這個擴充方法了,如下:

using System;using TestApp.ExtensionMethod;using TestApp.Method;namespace TestApp{        static void Main(string[] args)        {            Test test = new Test();            test.TestMethod();      // Call the method of itself            test.ExtendMethod();    // Call the extension method         }}

這裡只要using擴充方法(Extension Methods)所在命名空間既可以通過類A的執行個體來調用這個擴充方法(Extension Methods)了。

另外MSDN有一篇文章專門講這個的,大家可以去看看:
Extension Methods 。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.