C#中關於擴充方法的執行個體分析

來源:互聯網
上載者:User
這篇文章主要介紹了C#擴充方法,結合執行個體形式分析了C#擴充方法的功能、使用方法及相關注意事項,需要的朋友可以參考下

本文執行個體講述了C#擴充方法。分享給大家供大家參考,具體如下:

擴充方法

擴充方法使您能夠向現有類型“添加”方法,而無需建立新的衍生類別型、重新編譯或以其他方式修改原始類型。擴充方法是一種特殊的靜態方法,但可以像擴充類型上的執行個體方法一樣進行調用。對於用 C# 和 Visual Basic 編寫的用戶端代碼,調用擴充方法與調用在類型中實際定義的方法之間沒有明顯的差異。

如果我們有這麼一個需求,將一個字串的第一個字元轉化為大寫,第二個字元到第n個字元轉化為小寫,其他的不變,那麼我們該如何?呢?

不使用擴充方法:

using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace ExtraMethod{  //抽象出靜態StringHelper類  public static class StringHelper  {    //抽象出來的將字串第一個字元大寫,從第一個到第len個小寫,其他的不變的方法    public static string ToPascal(string s,int len)    {      return s.Substring(0, 1).ToUpper() + s.Substring(1, len).ToLower() + s.Substring(len + 1);    }  }  class Program  {    static void Main(string[] args)    {      string s1 = "aSDdAdfGDFSf";      string s2 = "sbfSDffsjG";      Console.WriteLine(StringHelper.ToPascal(s1,3));      Console.WriteLine(StringHelper.ToPascal(s2, 5));    }  }}

使用擴充方法:

using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace ExtraMethod{  class Program  {    static void Main(string[] args)    {      string s1 = "aSDdAdfGDFSf";      string s2 = "sbfSDffsjG";      Console.WriteLine(s1.ToPascal(3));      Console.WriteLine(s2.ToPascal(5));    }  }  //擴充類,只要是靜態就可以  public static class ExtraClass  {    //擴充方法--特殊的靜態方法--為string類型添加特殊的方法ToPascal    public static string ToPascal(this string s, int len)    {      return s.Substring(0, 1).ToUpper() + s.Substring(1, len).ToLower() + s.Substring(len + 1);    }  }}

通過上面兩種方法的比較:

1.代碼在訪問ToPascal這樣的靜態方法時更為便捷。用起來就像是被擴充類型確實具有該執行個體方法一樣。
2.擴充方法不改變被擴充類的代碼,不用重新編譯、修改、派生被擴充類

定義擴充方法

1.定義一個靜態類以包含擴充方法。
2.該類必須對用戶端代碼可見。
3.將該擴充方法實現為靜態方法,並使其至少具有與包含類相同的可見度。
4.方法的第一個參數指定方法所操作的類型;該參數必須以 this 修飾符開頭。

請注意,第一個參數不是由調用代碼指定的,因為它表示正應用運算子的類型,並且編譯器已經知道對象的類型。 您只需通過 n 為這兩個形參提供實參。

注意事項:

1.擴充方法必須在靜態類中定義
2.擴充方法的優先順序低於同名的類方法
3.擴充方法只在特定的命名空間內有效
4.除非必要不要濫用擴充方法

相關文章

聯繫我們

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