国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C# > 正文

C#擴展方法實例分析

2019-10-29 21:09:30
字體:
來源:轉載
供稿:網友

本文實例講述了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));    }  }}

C#,擴展方法

使用擴展方法:

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);    }  }}

C#,擴展方法

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

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

定義擴展方法

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

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

注意事項:

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

希望本文所述對大家C#程序設計有所幫助。


注:相關教程知識閱讀請移步到c#教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 东明县| 左权县| 崇仁县| 横峰县| 辽阳县| 平南县| 玉山县| 海林市| 桂阳县| 和田县| 哈密市| 会昌县| 罗平县| 清徐县| 永春县| 内黄县| 红原县| 富顺县| 沅陵县| 开平市| 佳木斯市| 扶沟县| 晴隆县| 兴文县| 呼玛县| 墨脱县| 长丰县| 陆河县| 新邵县| 松桃| 宁波市| 新津县| 拜城县| 探索| 阿拉善右旗| 石渠县| 滁州市| 遂宁市| 崇明县| 定陶县| 西华县|