欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C#擴展方法實例分析

 更新時間:2017年06月15日 08:19:44   作者:傻丫頭與科技  
這篇文章主要介紹了C#擴展方法,結(jié)合實例形式分析了C#擴展方法的功能、使用方法及相關注意事項,需要的朋友可以參考下

本文實例講述了C#擴展方法。分享給大家供大家參考,具體如下:

擴展方法

擴展方法使您能夠向現(xiàn)有類型“添加”方法,而無需創(chuàng)建新的派生類型、重新編譯或以其他方式修改原始類型。擴展方法是一種特殊的靜態(tài)方法,但可以像擴展類型上的實例方法一樣進行調(diào)用。對于用 C# 和 Visual Basic 編寫的客戶端代碼,調(diào)用擴展方法與調(diào)用在類型中實際定義的方法之間沒有明顯的差異。

如果我們有這么一個需求,將一個字符串的第一個字符轉(zhuǎn)化為大寫,第二個字符到第n個字符轉(zhuǎn)化為小寫,其他的不變,那么我們該如何實現(xiàn)呢?

不使用擴展方法:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ExtraMethod
{
  //抽象出靜態(tài)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));
    }
  }
  //擴展類,只要是靜態(tài)就可以
  public static class ExtraClass
  {
    //擴展方法--特殊的靜態(tài)方法--為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這樣的靜態(tài)方法時更為便捷。用起來就像是被擴展類型確實具有該實例方法一樣。
    2.擴展方法不改變被擴展類的代碼,不用重新編譯、修改、派生被擴展類

定義擴展方法

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

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

注意事項:

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

更多關于C#相關內(nèi)容感興趣的讀者可查看本站專題:《C#窗體操作技巧匯總》、《C#數(shù)據(jù)結(jié)構(gòu)與算法教程》、《C#常見控件用法教程》、《C#面向?qū)ο蟪绦蛟O計入門教程》及《C#程序設計之線程使用技巧總結(jié)

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

相關文章

  • C#實現(xiàn)簡單合并word文檔的方法

    C#實現(xiàn)簡單合并word文檔的方法

    這篇文章主要介紹了C#實現(xiàn)簡單合并word文檔的方法,涉及C#針對word文檔的讀取、插入、保存等技巧,非常具有實用價值,需要的朋友可以參考下
    2015-09-09
  • C#實現(xiàn)冒泡排序算法的代碼示例

    C#實現(xiàn)冒泡排序算法的代碼示例

    冒泡排序即是對數(shù)組每次輪循出最大數(shù)或最小數(shù)放在隊尾,這里我們來看一下C#實現(xiàn)冒泡排序算法的代碼示例,需要的朋友可以參考下
    2016-07-07
  • unity實現(xiàn)多點觸控代碼

    unity實現(xiàn)多點觸控代碼

    這篇文章主要介紹了unity實現(xiàn)多點觸控代碼,我最近在學習Unity游戲引擎。先從Unity平面開始,本章介紹Unity 平面上的多點觸摸。有需要的小伙伴參考下。
    2015-03-03
  • C#開啟線程的四種示例

    C#開啟線程的四種示例

    這篇文章主要介紹了C#開啟線程的四種方法,幫助大家更好的理解和使用c#,感興趣的朋友可以了解下
    2020-10-10
  • C#中的Task.Delay()和Thread.Sleep()區(qū)別(代碼案例)

    C#中的Task.Delay()和Thread.Sleep()區(qū)別(代碼案例)

    Task.Delay(),async/await和CancellationTokenSource組合起來使用可以實現(xiàn)可控制的異步延遲。本文通過多種代碼案例給大家分析C#中的Task.Delay()和Thread.Sleep()知識,感興趣的朋友一起看看吧
    2021-06-06
  • C#實現(xiàn)Winform中打開網(wǎng)頁頁面的方法

    C#實現(xiàn)Winform中打開網(wǎng)頁頁面的方法

    這篇文章主要介紹了C#實現(xiàn)Winform中打開網(wǎng)頁頁面的方法,涉及WinForm中WebBrowser的相關使用技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-08-08
  • c#之圓形無標題欄橢圓窗體的實現(xiàn)詳解

    c#之圓形無標題欄橢圓窗體的實現(xiàn)詳解

    本篇文章是對c#中圓形無標題欄橢圓窗體的實現(xiàn)方法進行了詳細的分析介紹,需要的朋友參考下
    2013-06-06
  • C#打開揚聲器的實操方法和代碼

    C#打開揚聲器的實操方法和代碼

    在本篇文章中我們給大家分享的是關于C#如何打開揚聲器的相關知識點內(nèi)容,需要的讀者們學習下。
    2019-08-08
  • WPF彈出右鍵菜單時判斷鼠標是否選中該項

    WPF彈出右鍵菜單時判斷鼠標是否選中該項

    這篇文章介紹了WPF彈出右鍵菜單時判斷鼠標是否選中該項的方法,文中通過示例代碼介紹的非常詳細。對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-06-06
  • C#多線程TPL模式高級用法探秘

    C#多線程TPL模式高級用法探秘

    本文詳細講解了C#多線程TPL模式的高級用法,文中通過示例代碼介紹的非常詳細。對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-03-03

最新評論