在C#中使用擴充方法

來源:互聯網
上載者:User

標籤:.net   c#   原始碼   

在我們的編程過程中,會使用各種類庫,有自己寫的,有的用別人的.當我們使用第三方的類庫時,有時候為了使用方便,希望給類庫增加一些Helper方法,這時候就要使用擴充方法了.

看看MSDN上的介紹:擴充方法使你能夠向現有類型“添加”方法,而無需建立新的衍生類別型、重新編譯或以其他方式修改原始類型。 擴充方法是一種特殊的靜態方法,但可以像擴充類型上的執行個體方法一樣進行調用。
通常,建議你只在不得已的情況下才實現擴充方法,並謹慎地實現。 只要有可能,必須擴充現有類型的用戶端代碼都應該通過建立從現有類型派生的新類型來達到這一目的。 

有關詳細資料,請參閱繼承(C# 編程指南)。
在使用擴充方法來擴充你無法更改其原始碼的類型時,你需要承受該類型實現中的更改會導致擴充方法失效的風險。
如果你確實為給定類型實現了擴充方法,請記住以下幾點:
如果擴充方法與該類型中定義的方法具有相同的簽名,則擴充方法永遠不會被調用。
在命名空間層級將擴充方法置於範圍中。 例如,如果你在一個名為 Extensions 的命名空間中具有多個包含擴充方法的靜態類,則這些擴充方法將全部由 using Extensions; 指令置於範圍中。


擴充方法的原則和步驟:
1 方法所在的類必須是靜態
2 方法也必須是靜態
3 方法的第一個參數必須是你要擴充的那個類型,比如你要給int擴充一個方法,那麼第一個參數就必須是int。
4 在第一個參數前面還需要有一個this關鍵字。

第一步:建立一個類庫和測試類別
namespace TestClibray
{
    public class Student
    {
        public string GetFirstName()
        {
            return "Daniel";
        }
        public string GetLastName()
        {
            return "D";
        }
    }
}
第二步:建立一個新的類庫和協助類,並編寫擴充方法.注意是靜態類,和靜態方法
namespace Helper
{
    public static class ExtensionHelper
    {
        public static string GetFullName(this TestClibray.Student stu)
        {
            return stu.GetFirstName() + " ." + stu.GetLastName();
        }
    }
}
第三部:測試使用這個擴充方法:注意要引用擴充方法所在的類庫

using System;
using System.Windows.Forms;
using TestClibray;
using Helper;
namespace WindowsFormsApplication2
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }


        private void button1_Click(object sender, EventArgs e)
        {
            Student stu = new Student();
            this.textBox1.Text = stu.GetFullName();
        }
    }
}

結果


在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.