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

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

(轉)委托的N種寫法,你喜歡哪種?

2019-11-17 03:25:25
字體:
來源:轉載
供稿:網友

(轉)委托的N種寫法,你喜歡哪種?

原文:http://m.survivalescaperooms.com/FreeDong/archive/2013/07/31/3227638.html

一、委托調用方式

1. 最原始版本:

復制代碼
    delegate string PlusStringHandle(string x, string y);    class PRogram    {        static void Main(string[] args)        {            PlusStringHandle pHandle = new PlusStringHandle(plusString);            Console.WriteLine(pHandle("abc", "edf"));            Console.Read();        }        static string plusString(string x, string y)        {            return x + y;        }    }
復制代碼

2. 原始匿名函數版:去掉“plusString”方法,改為

            PlusStringHandle pHandle = new PlusStringHandle(delegate(string x, string y)            {                return x + y;            });            Console.WriteLine(pHandle("abc", "edf"));

3. 使用Lambda(C#3.0+),繼續去掉“plusString”方法(以下代碼均不再需要該方法)

            PlusStringHandle pHandle = (string x, string y) =>            {                return x + y;            };            Console.WriteLine(pHandle("abc", "edf"));

還有更甚的寫法(省去參數類型)

            PlusStringHandle pHandle = (x, y) =>            {                return x + y;            };            Console.WriteLine(pHandle("abc", "edf"));

如果只有一個參數

復制代碼
        delegate void WriteStringHandle(string str);        static void Main(string[] args)        {            //如果只有一個參數            WriteStringHandle handle = p => Console.WriteLine(p);            handle("lisi");            Console.Read();        }
復制代碼

二、委托聲明方式

1. 原始聲明方式見上述Demo

2. 直接使用.NET Framework定義好的泛型委托 Func 與 Action ,從而省卻每次都進行的委托聲明。

復制代碼
        static void Main(string[] args)        {            WritePrint<int>(p => Console.WriteLine("{0}是一個整數", p), 10);            Console.Read();        }        static void WritePrint<T>(Action<T> action, T t)        {            Console.WriteLine("類型為:{0},值為:{1}", t.GetType(), t);            action(t);        }
復制代碼

3. 再加上個擴展方法,就能搞成所謂的“鏈式編程”啦。

復制代碼
    class Program    {           static void Main(string[] args)        {            string str = "所有童鞋:".plusString(p => p = p + " girl: lisi、lili/r/n").plusString(p => p + "boy: wangwu") ;            Console.WriteLine(str);            Console.Read();        }    }    static class Extentions    {        public static string plusString<TParam>(this TParam source, Func<TParam, string> func)        {            Console.WriteLine("字符串相加前原值為:{0}。。。。。。", source);            return func(source);        }    }
復制代碼

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 墨江| 鸡东县| 宝应县| SHOW| 徐闻县| 宁德市| 武山县| 财经| 兴文县| 碌曲县| 五寨县| 淅川县| 贵德县| 白城市| 丹阳市| 汾阳市| 阿克| 普安县| 洮南市| 张家界市| 新蔡县| 元朗区| 孟津县| 武威市| 靖远县| 平定县| 繁峙县| 玉田县| 拜泉县| 青田县| 原阳县| 武夷山市| 洞头县| 汉沽区| 辽宁省| 高平市| 绥芬河市| 饶平县| 巧家县| 秦皇岛市| 茌平县|