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

Extension Method - c#3.0

編輯:C#基礎知識

Extension Method能夠讓你為一個已經存在的類添加方法,而不用去創建一個子類繼承它。

具體做法:

  1. 定義一個靜態的類來包含這個擴展方法。
  2. 定義擴展方法,必須是靜態的,該方法的第一個參數用來指定是擴展哪個類的方法,

    並且前面要加this關鍵字。

  3. 在想要調用擴展方法的類中,用using引入該類的命名空間就可以了。

下面是例子:

定義一個類來擴展string類:

namespace MyExtension

{

//Extension methods must be defined in a static class

public static class StringExtension

{

// This is the extension method.

// The first parameter takes the "this" modifier

// and specifies the type for which the method is defined.

public static int WordCount(this String str, string msg)

{

Console.WriteLine(msg);

return str.Split(new char[] { ' ', ',', '.', '?' }, StringSplitOptions.RemoveEmptyEntries).Length;

}

}

}

在調用的類中用using MyExtension;先引入名空間,然後就可以用了:

private void Form1_Load(object sender, EventArgs e)

{

string str = "I come from China, and you? Nice to meet you.";

int count = str.WordCount("hello world");

// "hello world" 傳給msg參數

}


通用准則
通常,建議你只在不得已的情況下才實現擴展方法,並謹慎地實現。只要有可能,必須擴展現有類型的客戶端代碼都應該通過創建從現有類型派生的新類型來達到這一目的。有關詳細信息,請參閱繼承(C# 編程指南)。

在使用擴展方法來擴展你無法更改其源代碼的類型時,你需要承受該類型實現中的更改會導致擴展方法失效的風險。

如果你確實為給定類型實現了擴展方法,請記住以下幾點:
如果擴展方法與該類型中定義的方法具有相同的簽名,則擴展方法永遠不會被調用。

在命名空間級別將擴展方法置於范圍中。例如,如果你在一個名為 Extensions 的命名空間中具有多個包含擴展方法的靜態類,則這些擴展方法將全部由 using Extensions; 指令置於范圍中。

針對已實現的類庫,不應為了避免程序集的版本號遞增而使用擴展方法。如果要向你擁有源代碼的庫中添加重要功能,應遵循適用於程序集版本控制的標准 .NET Framework 准則。有關詳細信息,請參閱程序集版本控制。
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved