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

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

編輯:C#基礎知識
當你有下面這樣一個需求的時候,擴展方法就會起到作用:在項目中,類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)了。

參考:<a href="http://hovertree.com/h/bjaf/0na4gr7f.htm" target="_blank">http://hovertree.com/h/bjaf/0na4gr7f.htm</a>
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved