概要:.NET對類的擴充包含兩種方法,一種是擴充方法,一種是部分類;
擴充方法:
C# .net中可以自訂擴充類,即對某些現成類或沒有源碼的類進行擴充
擴充方法可以使你來擴充一個已存在的類型,增加它的方法,而無需繼承它或者重新編譯。所以不像為對象寫助手方法,擴充方法可以直接是對象自己的一部分。擴充方法是定義在靜態類中的靜態方法,並且必須有一個參數指向該方法附加的類型對象。
一個樣本,假設我們想要驗證一個string(已存在,並且沒有源碼)是不是合法的Email地址,我們可以編寫一個方法,輸入為一個string並且返回true或者false。現在,使用擴充方法,我們可以如下這樣做:
public static class MyExtensions {
public static bool IsValidEmailAddress(this string s) {
Regex regex = new Regex( @"^[w-.]+@([w-]+.)+[w-]{2,4}$" );
return regex.IsMatch(s);
}
}
我們定義了一個帶有靜態方法的靜態類。注意,那個靜態方法在參數類型string前面有一個this關鍵詞,這會告訴編譯器這個特殊的擴充方法會增加給string類型的對象。於是我們就可以在string中調用這個成員方法:
using MyExtensions;
string email = Request.QueryString["email"];
if ( email.IsValidEmailAddress() ) {
// ...
}
當然除了該中方法之外,只要你在類前加了partial ,你也可以直接在另一個檔案裡命名同樣的類,來添加你需要的方法。
例如:
namespace PC
{
partial class A { }
}
namespace PC
{
partial class A { }
}
這兩個類實際上是一個類。這樣就可以將自動產生的程式碼,和自己編寫的代碼分開。容易進行代碼控制。