.NET中對類的擴充

來源:互聯網
上載者:User

概要:.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 { }
}

 這兩個類實際上是一個類。這樣就可以將自動產生的程式碼,和自己編寫的代碼分開。容易進行代碼控制。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.