亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

[原創]擴展方法基本用法

2019-11-14 16:09:37
字體:
來源:轉載
供稿:網友

前言

   首先我們看看msdn上面的解釋:擴展方法使你能夠向現有類型“添加”方法,而無需創建新的派生類型、重新編譯或以其他方式修改原始類型。

其實說白了就是微軟那班哥們寫好的類庫,我們無法修改,但是我們可以給這些類庫通過一種方式添加我們的一些方法。

1.0 擴展方法應用場景

DateTime now = DateTime.Now;//1.0 將now格式化成yyyy-MM-dd 輸出string fmtstr = now.Tostring("yyyy-MM-dd");
//2.0 將now格式化成yyyy-MM-dd HH:mm:ss 輸出
string fmtstr1 = now.Tostring("yyyy-MM-dd");

  現在在這里只有一次沒有什么問題,假如在我們的系統中要用到成千上萬次了? 這個時候我們該怎么辦了,聰明的你,肯定想到了寫一個方法...

  public static class ExtHelper    {        public static string fmtDatayyyymmdd(DateTime now)        {            return now.ToString("yyyy-MM-dd");        }        public static string fmtDatayyyymmddhhmmss(DateTime now)        {            return now.ToString("yyyy-MM-dd HH:mm:ss");        }    }

經過改造,上面的代碼可以改寫為如下:

DateTime now = DateTime.Now;//1.0 將now格式化成yyyy-MM-dd 輸出string fmtstr = ExtHelper.fmtDatayyyymmdd(now);//2.0 將now格式化成yyyy-MM-dd HH:mm:ss 輸出string fmtstr1 =ExtHelper.fmtDatayyyymmddhhmmss(now);

可是程序員都是很懶的,那么我們必須把這個ExtHelper記住,想想我們還有沒有更好的方法,如果要是能夠now.方法名就很好了,擴展方法就能滿足我們的這個要求...

 2.0擴展方法三要素

擴展方法的寫法步驟:
1、必須放到靜態類中
2、方法必須是靜態方法
3、方法的第一個參數是類型參數,使用this 開頭

經過改造的ExtHelper

    public static class ExtHelper    {        public static string fmtDatayyyymmdd(this DateTime now)        {            return now.ToString("yyyy-MM-dd");        }        public static string fmtDatayyyymmddhhmmss(this DateTime now)        {            return now.ToString("yyyy-MM-dd HH:mm:ss");        }    }

調用如下:

DateTime now = DateTime.Now;//1.0 將now格式化成yyyy-MM-dd 輸出string fmtstr = now.fmtDatayyyymmdd();//2.0 將now格式化成yyyy-MM-dd HH:mm:ss 輸出string fmtstr1 = now.fmtDatayyyymmddhhmmss();

3.0擴展方法的特點

1、擴展方法優先級要低于實例方法 

 

    public static class ExtHelper    {        public static string ToUpper(this string str)        {            return str.ToUpper();        }    }

 

  我們都知道在string上面有一個ToUpper方法,如果此時我們在定義一個同樣的擴展方法,這個方法將不起作用...

2、擴展方法可以與實例方法構成方法的重載

 

 public static class ExtHelper    {        public static string ToUpper(this string str, int num)        {            return str.ToUpper() + num;        }    }

 

  此時,如果我們有自己的業務邏輯,那么我們可以和實例方法構成重載...

3、定義在父類上面的擴展方法,在子類對象上可以使用

 public interface ipig { }    public class Pig : IPig    {        PRivate string _name;        public string Name        {            get            {                return _name;            }            set            {                if (value.Length >= 2)                {                    _name = value;                }                else                {                    //拋出異常                }            }        }        //自動屬性        public int Age        {            get;            set;        }    }    public class smallPig : Pig { }
 public static class ExtHelper    {        public static string Get(this Pig pig)        {            return pig.Name;        }    }

  子類也可以點出擴展方法

var pig = new Pig(); pig.Get(); var spig = new smallPig(); spig.Get();

 

4、定義在接口上面的擴展方法,在實現類對象上可以使用 (EF,MVC使用很頻繁)

 public static class ExtHelper    {        public static void Set(this IPig ipig)        {                }    }

  接口實現類也可以點出擴張方法。在MVC中的擴展在IQueryable<T>中的擴展方法,在Dbset<T>中使用

            var pig = new Pig();            pig.Get();            pig.Set();            var spig = new smallPig();            spig.Get();            spig.Set();

 


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
一区二区欧美激情| 国产视频在线一区二区| 亚洲自拍中文字幕| 久久久最新网址| 国产欧美在线视频| 国产精品电影在线观看| 欧美华人在线视频| 欧美另类精品xxxx孕妇| 精品无码久久久久久国产| 日本欧美一级片| 欧美精品一区二区三区国产精品| 国产亚洲欧洲黄色| 欧美午夜精品久久久久久久| 精品成人69xx.xyz| 欧美猛交ⅹxxx乱大交视频| 91影院在线免费观看视频| 精品视频久久久久久| 永久免费看mv网站入口亚洲| 国产午夜精品久久久| 亚洲视频在线播放| 久久精品国产欧美激情| 日韩av男人的天堂| 日韩av在线网站| 亚洲精品videossex少妇| 这里精品视频免费| 国产精品视频免费观看www| 国产亚洲精品久久久久久777| 亚洲精品美女久久久久| 深夜福利91大全| 91免费看片网站| 这里只有精品在线播放| 精品国产电影一区| 国产精品第一页在线| 91精品久久久久久久久久久久久久| 国产97在线观看| 日韩视频免费看| 欧美性猛交xxxx乱大交3| 亚洲国产91色在线| 亚洲欧美在线免费| 精品国产成人在线| 国产精品久久999| 日韩av手机在线| 精品国产电影一区| 亚洲专区在线视频| 亚洲人在线视频| 国产一区二区黄| 欧美高清无遮挡| 亚洲精品狠狠操| 国产精品一区二区三| 91国偷自产一区二区三区的观看方式| 色偷偷av一区二区三区乱| 亚洲黄色有码视频| 日韩在线观看网址| 中文字幕精品一区久久久久| 91精品国产自产在线| 亚洲午夜色婷婷在线| 色妞一区二区三区| 亚洲欧美精品中文字幕在线| 亚洲国产91色在线| 91久久久久久久久| 精品伊人久久97| 精品久久久久久国产| 欧美成年人视频网站欧美| 亚洲最大福利视频网| 日韩在线观看免费av| 久久av在线播放| 亚洲国产精品专区久久| 成人黄色av免费在线观看| 欧美激情精品久久久久| 欧美精品免费在线观看| 久久久久久伊人| 亚洲欧美日韩另类| 欧美在线视频免费播放| 国产精品人成电影在线观看| 久久精品国亚洲| 亚洲人成亚洲人成在线观看| 国产成人精品亚洲精品| 国产精品久久久久久久久久ktv| 欧美性视频精品| 国产精品美女主播在线观看纯欲| 亚洲国产欧美精品| 亚洲精品第一国产综合精品| 亚洲免费电影在线观看| 中文字幕亚洲激情| 亚洲最大福利视频网| 中文字幕日韩精品有码视频| 91欧美激情另类亚洲| 国产精品成人一区二区| 亚洲最新中文字幕| 国内精品小视频| 国产精品久久久久久亚洲调教| 国产精品成久久久久三级| 国产精自产拍久久久久久蜜| 九九九热精品免费视频观看网站| 久久视频国产精品免费视频在线| 色噜噜狠狠狠综合曰曰曰88av| 精品久久久国产精品999| 亚洲最大中文字幕| 日韩中文字幕视频在线| 国产成人在线一区二区| 中文字幕视频一区二区在线有码| 亚洲韩国青草视频| 97人人爽人人喊人人模波多| 影音先锋日韩有码| 日韩精品亚洲元码| www国产91| 精品伊人久久97| 精品欧美aⅴ在线网站| 亚洲欧美在线一区| 免费99精品国产自在在线| 亚洲视频第一页| 日韩高清免费在线| 国产精品久久久久免费a∨大胸| 国产精品久久久久av免费| 国语自产精品视频在线看| 精品毛片网大全| 亚洲免费视频一区二区| 久久精品99久久久香蕉| 久久国产精品免费视频| 亚洲天堂成人在线| 91深夜福利视频| 中文欧美在线视频| 亚洲人成电影网站色xx| 精品日韩美女的视频高清| 中文字幕v亚洲ⅴv天堂| 亚洲а∨天堂久久精品喷水| 亚洲无亚洲人成网站77777| 久久免费视频网| 久久精品2019中文字幕| 欧美日韩另类字幕中文| 亚洲人成亚洲人成在线观看| 国产日韩视频在线观看| 日韩av免费看网站| 亚洲人成网站999久久久综合| 色偷偷av亚洲男人的天堂| 亚洲精品不卡在线| 精品亚洲夜色av98在线观看| 欧美黄色成人网| 亚洲精品国产欧美| 欧美日韩国产在线播放| 国产在线拍揄自揄视频不卡99| 亚洲视频在线免费看| 久久精品在线播放| 亚洲精品久久久久久久久久久久久| 国产最新精品视频| 91高清免费视频| 亚洲一区二区三区在线免费观看| 中文精品99久久国产香蕉| 中文.日本.精品| 亚洲人成在线播放| 成人av电影天堂| 亚洲自拍av在线| 久久综合伊人77777尤物| 91亚洲永久免费精品| 国产视频精品xxxx| 亚洲精品视频在线播放| 欧美裸体xxxxx| 亚洲欧美一区二区三区情侣bbw| 久久久久久久网站| 成人免费视频xnxx.com| 精品久久久香蕉免费精品视频| 一本久久综合亚洲鲁鲁| 亚洲欧洲日韩国产| 亚洲v日韩v综合v精品v|