成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

C#擴(kuò)展方法實(shí)例分析

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

創(chuàng)新互聯(lián)專注于企業(yè)成都全網(wǎng)營(yíng)銷推廣、網(wǎng)站重做改版、蘆山網(wǎng)站定制設(shè)計(jì)、自適應(yīng)品牌網(wǎng)站建設(shè)、H5開(kāi)發(fā)、購(gòu)物商城網(wǎng)站建設(shè)、集團(tuán)公司官網(wǎng)建設(shè)、外貿(mào)網(wǎng)站制作、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁(yè)設(shè)計(jì)等建站業(yè)務(wù),價(jià)格優(yōu)惠性價(jià)比高,為蘆山等各大城市提供網(wǎng)站開(kāi)發(fā)制作服務(wù)。

擴(kuò)展方法

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

如果我們有這么一個(gè)需求,將一個(gè)字符串的第一個(gè)字符轉(zhuǎn)化為大寫,第二個(gè)字符到第n個(gè)字符轉(zhuǎn)化為小寫,其他的不變,那么我們?cè)撊绾螌?shí)現(xiàn)呢?

不使用擴(kuò)展方法:

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
  {
    //抽象出來(lái)的將字符串第一個(gè)字符大寫,從第一個(gè)到第len個(gè)小寫,其他的不變的方法
    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#擴(kuò)展方法實(shí)例分析

使用擴(kuò)展方法:

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));
    }
  }
  //擴(kuò)展類,只要是靜態(tài)就可以
  public static class ExtraClass
  {
    //擴(kuò)展方法--特殊的靜態(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);
    }
  }
}

C#擴(kuò)展方法實(shí)例分析

通過(guò)上面兩種方法的比較:

    1.代碼在訪問(wèn)ToPascal這樣的靜態(tài)方法時(shí)更為便捷。用起來(lái)就像是被擴(kuò)展類型確實(shí)具有該實(shí)例方法一樣。
    2.擴(kuò)展方法不改變被擴(kuò)展類的代碼,不用重新編譯、修改、派生被擴(kuò)展類

定義擴(kuò)展方法

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

請(qǐng)注意,第一個(gè)參數(shù)不是由調(diào)用代碼指定的,因?yàn)樗硎菊龖?yīng)用運(yùn)算符的類型,并且編譯器已經(jīng)知道對(duì)象的類型。 您只需通過(guò) n 為這兩個(gè)形參提供實(shí)參。

注意事項(xiàng):

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

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

希望本文所述對(duì)大家C#程序設(shè)計(jì)有所幫助。

分享題目:C#擴(kuò)展方法實(shí)例分析
文章鏈接:http://jinyejixie.com/article8/ijcpop.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供定制開(kāi)發(fā)、網(wǎng)站導(dǎo)航、品牌網(wǎng)站建設(shè)軟件開(kāi)發(fā)、服務(wù)器托管企業(yè)建站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

外貿(mào)網(wǎng)站制作
钦州市| 宜章县| 安徽省| 缙云县| 岢岚县| 麦盖提县| 邢台县| 丹江口市| 黄骅市| 嫩江县| 新田县| 个旧市| 航空| 长岛县| 沾化县| 松阳县| 平度市| 长岛县| 衢州市| 密山市| 睢宁县| 丰原市| 丰原市| 永定县| 土默特左旗| 诏安县| 延川县| 海宁市| 屏山县| 威海市| 佛学| 黎川县| 井研县| 通州区| 怀远县| 泰安市| 类乌齐县| 丹东市| 南澳县| 普宁市| 潢川县|