[.NET學習筆記]C#新特性——extension(擴充)方法

來源:互聯網
上載者:User

在C#中,您不能繼承和擴充用訪問標識符標記為“封裝”的類型。但在C# 3.0中,擴充方法允許您擴充任何類,甚至是標記為封裝的類。擴充方法就是將靜態方法(必須聲明成static)插入到某個類和其子類中
   (也就是說,在這些類中可以使用在外部定義的靜態方法)。

    那麼要往哪個類中插入呢?   這就要在定義靜態方法時通過this關鍵字指定了。

    例如在string類中加入一個靜態方法,它的定義方式為:

namespace MyExtensionMethods{ public static class Extension {  public static void NoSpaces(this string s)  {   return s.Replace(" ", "");  } }}

在一個類中匯入這個extension方法時,開發人員就能夠對這個類包含的任何字串調用NoSapces()方法。
extension方法的第一個參數決定extension方法的有效類型。在這種情況下,“這個字串資料”(this string s)表明擴充方法適用於字串類;如果extension方法以“這個對象資料”(this object data)為第一個參數,則說明這個方法對每個對象有效。
要表明您希望匯入擴充方法,只需在它們的命名空間中包括一個using指令。例如,要應用上面說明的方法,需要在類檔案中包括一個using MyExtensionMethods指令:(列表B)
列表B

using MyExtensionMethods;namespace MyNamespace{ public class MyClass {  public MyClass()  {   string data = "this is my data";   //nospaces will contain "thisismydata".   string nospaces = data.NoSpaces();  } }}

在使用擴充方法時應注意以下兩點:

1. 擴充方法所在的類名可以是任意合法的類名。

2. 擴充方法所在的類必須和使用擴充方法的代碼在同一個命名空間裡,

否則無法編譯通過。

.NET Framework擴充方法尤其在很多類需要同樣的方法, 而這些類又無法繼承其它類時特別有用。 當然,在要對某個類進行擴充,但我們並沒有原始碼時,擴充方法也可以派上用場。 如:可以擴充ASP.NET MVC2.0中的View的HtmlHelper類的靜態方法。

本文根據:http://blog.csdn.net/zlghitler/article/details/1706086 整理.

相關文章

聯繫我們

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