C#編程(二十一)----------擴充方法

來源:互聯網
上載者:User

標籤:span   部分   roman   class   使用   其他   同名   rom   one   

C#中的擴充方法

有許多擴充類的方式.如果有類的原始碼,繼承就是給類添加功能的好方法.但是如果沒有原始碼,怎麼辦?吃屎可以使用擴充方法,它允許改變一個類,但不需要該類的原始碼.擴充方法是靜態方法,它是類的一部分,但實際上沒有放在類的原始碼中.例如我有一個Money類,不知道原始碼,需要一個AddToAmount(decimal amountToAdd).

我們可以這麼做:

namespace Wrox

{

public static class MoneyExtension

{

public static void AddToAmount(this Money money,decimal amountToAdd)

{

money.Amount+=amountToAdd;

}

}

}

注意AddToAmount()方法的參數.對於擴充方法,第一個參數是要擴充的類型,它放在this關鍵字的後面.告訴編譯器,這個方法是Money類型的一部分.在此例中,Money是要擴充的類型.在擴充方法中,可以訪問所擴充類型的所有的共有方法和屬性.

在主程式中,AddToAmount()方法看起來像是擰一個方法.它沒有顯示第一個參數,也不能對它進行任何處理.要使用新方法,與使用其他方法一樣:

Monet cash=new Money();

cash.AddToAmount(100m);

如果擴充方法與類中的某個方法同名,就從來不會調用擴充方法.類中已有的任何執行個體方法優先.

C#編程(二十一)----------擴充方法

聯繫我們

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