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

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

C#基礎---委托的使用

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

     一:什么是委托

      委托是一種定義方法簽名的類型當實例化委托時,您可以將其實例與任何具有兼容簽名的方法相關聯。您可以通過委托實例調用方法。委托是一個引用類型,所以它具有引用類型所具有的通性。它保存的不是實際值,而是保存對存儲在托管堆(managed heap)中的對象的引用。 委托可以引用靜態方法和非靜態方法。

         通俗的理解是,委托其實可以是一種簡單的約束,好比在工作上我聲明了一個委托人A, A同時可以接受(人力資源,后勤公務)兩個參數,那么只要是有人想處理(人力資源,后勤)方面的事情,都可以去注冊到委托人A上,A有能力接受這些方法,然后去處理。

     二:委托的聲明

         聲明委托可以通過delegate來聲明,委托可以依賴于一個類,也可以依賴于一個namespace間。即 在類里面聲明和在類外面聲明。其中delegate可以有返回類型和非返回類型,其中delegate也支持泛型。

public delegate double AddNum(double num1,double num2);public delegate void ShowMsg(string str);

  三: 委托的使用

     1. 基本使用:下面是一個計算方法,聲明了一個委托CalculatorDelegate,然后在Main方法里面先后注冊了AddNum,和SumNum方法,注冊的方法必須與委托的參數以及返回類型相符合,否者將會提示【委托與注冊方法不匹配的提示】對于這塊是直接編譯無法通過的。委托如果被注冊了多個方法,稱為多播。對于多播,調用委托后,按照注冊順序執行。不過對于有返回值的方法,將返回最后注冊的方法執行后的返回值。

         Notes:第一次注冊方法的時候可以使用【=注冊】或者【new CalculatorDelegate(方法名) 】,后面添加方法用【+】,取消注冊方法用【-】

運行代碼和運行結果如下圖:   

using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace SpongeBobCoder.Delegate{    public delegate double CalculatorDelegate(double num1, double num2); // 委托,聲明在類之外    public class PRogram    {        public static double AddNum(double num1, double num2)        {            Console.WriteLine("Sum={0}", num1 + num2);            return num1 + num2;        }        public static double SubNum(double num1, double num2)        {            Console.WriteLine("Sub={0}", num1 - num2);            return num1 - num2;        }        public static void Main(string[] args)        {            CalculatorDelegate calculatorDel = AddNum; // 目前為單播            Console.WriteLine("委托一個方法的結果為:{0}", calculatorDel(1, 2));            calculatorDel += SubNum; // 目前是多播            Console.WriteLine("委托兩個方法的結果為:{0}", calculatorDel(1, 2));            Console.ReadKey();        }    }}

    2. 委托注冊方法的幾種形式:除了上面的方式,其實委托的注冊方法還支持Linq方法,匿名方法。其實在Linq中也大量的委托,比如在使用List<T>.where(),List<T>.sort()這些方法的時候其實里面就運用的大量的委托。其實可以理解為就是委托的縮影。

using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace SpongeBobCoder.Delegate{    public delegate double CalculatorDelegate(double num1, double num2); // 委托    public class Program    {        public static void Main(string[] args)        {            CalculatorDelegate calculatorDel = delegate(double x, double y) //等效于AddNum方法            {                return x + y;            };            Console.WriteLine("委托一個方法的結果為:{0}", calculatorDel(1, 2));            calculatorDel += (x, y) => // 等效于SumNum方法            {                return x - y;            };            Console.WriteLine("委托兩個方法的結果為:{0}", calculatorDel(1, 2));            Console.ReadKey();        }    }}

     3. 小添加: 其實在.net框架提供了自帶的委托. Action<T>,Func<T,out Result>。Action是無返回值泛型委托,Func是有返回值的泛型委托【out Result就是返回值,不過使用的時候不是要傳入一個out參數,對于Action<T,T,out Result>,其實就是傳入2個參數?!看a如下:

          Notes:注意Func<>三個參數,可是AddNum只有兩個,其實第三個就是對應的返回值,這里有別于我們前面說的委托,希望大家注意.

using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace SpongeBobCoder.Delegate{    public class Program    {        private static void ShowMsg(string str)        {            Console.WriteLine(str);        }        private static double AddNum(double num1, double num2)        {            return num1 + num2;        }        public static void Main(string[] args)        {            Action<string> action = ShowMsg;            action("Action委托好用!");            Func<double, double, double> func = AddNum; // Notes            Console.WriteLine("Func委托真好用,兩數之和為:{0}", func(1, 2));            Console.ReadKey();        }    }}

 

       四:總結

           因為最近在接觸Silverlight,事件委托以后會不斷接觸。所以這兩天看了一下事件委托的知識,并寫博客記錄一下。有什么理解不對,描述不對的還請各位博友指點指點。下篇會更新事件的使用。

   


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲性无码av在线| 精品久久香蕉国产线看观看gif| 色狠狠久久aa北条麻妃| 久久精品国产69国产精品亚洲| 国产精品第2页| 国产精品久久久久福利| 日韩精品免费一线在线观看| 精品久久久久久中文字幕一区奶水| 国产精品美女无圣光视频| 欧美裸体xxxxx| 国产精品av在线| 国产日韩欧美夫妻视频在线观看| 91精品久久久久久久久久另类| 国产精品视频白浆免费视频| 亚洲国产另类久久精品| 亚洲精品二三区| 98精品在线视频| 亚洲成人精品久久久| 国产精品亚洲综合天堂夜夜| 国产欧美一区二区三区视频| 亚洲自拍偷拍在线| 亚洲国产精品成人av| 欧美风情在线观看| 国产亚洲成av人片在线观看桃| 亚洲欧美日韩中文视频| 久久久综合免费视频| 欧美国产日韩一区二区在线观看| 欧美巨猛xxxx猛交黑人97人| 亚洲一区二区自拍| 欧美激情免费视频| 亚洲精品www久久久| 情事1991在线| 国产亚洲精品久久久久动| 国产日韩换脸av一区在线观看| 91久久精品久久国产性色也91| 国产精品第一页在线| 精品亚洲一区二区三区在线播放| 国产日产欧美a一级在线| 97精品国产97久久久久久免费| 成人av在线亚洲| 欧美精品电影免费在线观看| 亚洲成av人乱码色午夜| 91天堂在线视频| 3344国产精品免费看| 欧美电影在线观看完整版| 亚洲无限乱码一二三四麻| 亚洲老头同性xxxxx| 欧美视频在线观看 亚洲欧| 亚洲国产另类久久精品| 国模精品视频一区二区| 精品美女久久久久久免费| 成人久久一区二区| 中文字幕欧美亚洲| 亚洲精品免费一区二区三区| 成人中文字幕+乱码+中文字幕| 国产成人鲁鲁免费视频a| 一区二区日韩精品| 精品久久久久久| 日韩中文字幕视频在线观看| 一区二区三区精品99久久| 国产精品日韩在线观看| 成人网中文字幕| 欧美日韩亚洲精品一区二区三区| 51ⅴ精品国产91久久久久久| 亚洲夜晚福利在线观看| 成人免费网视频| 成人免费网视频| 91社影院在线观看| 不卡av日日日| 成人精品在线观看| 成年人精品视频| 国产精品影院在线观看| 亚洲aa中文字幕| 亚洲一区中文字幕| 欧美性开放视频| 久久色免费在线视频| 国产一区二区三区视频免费| 日韩禁在线播放| 91在线观看免费| 久久人人爽人人爽人人片av高请| 91精品视频在线免费观看| 亲爱的老师9免费观看全集电视剧| 中文字幕国产亚洲2019| 日本高清+成人网在线观看| 亚洲综合日韩中文字幕v在线| 亚洲欧美日韩直播| 韩剧1988在线观看免费完整版| 日韩av在线影院| 亚洲福利小视频| 色综合久久精品亚洲国产| 国产精品直播网红| 国产91精品久| 91沈先生作品| 91久久精品国产| 国产精品久久久久久久久影视| 日韩在线精品视频| 亚洲美女av在线播放| 久久久噜噜噜久久中文字免| 日韩精品亚洲视频| 久久精品人人做人人爽| 欧美国产激情18| 日韩欧美在线中文字幕| 亚洲精品综合久久中文字幕| 日韩免费观看视频| 国产精品国产三级国产aⅴ浪潮| 91香蕉嫩草神马影院在线观看| 91超碰中文字幕久久精品| 精品露脸国产偷人在视频| 日韩中文字幕网站| 亚洲国产精品va在线| 欧美成年人视频网站| 正在播放国产一区| 国产在线观看91精品一区| 青青草99啪国产免费| 久久人人爽人人爽爽久久| 成人www视频在线观看| 国产精品电影久久久久电影网| 26uuu国产精品视频| 午夜精品久久久久久久久久久久久| 1769国内精品视频在线播放| 最近2019中文字幕mv免费看| 日韩精品视频在线播放| 欧美日韩精品二区| 高清欧美性猛交xxxx| 亚洲乱码一区av黑人高潮| 伊人成人开心激情综合网| 全球成人中文在线| 日韩视频在线观看免费| 欧美日韩免费观看中文| 92看片淫黄大片看国产片| 国内成人精品视频| 日韩h在线观看| 亚洲国产成人久久综合一区| 日韩中文字幕在线视频| 欧美性猛交xxxx乱大交极品| 国产成人精品综合久久久| 91在线免费观看网站| 日本午夜精品理论片a级appf发布| 日本精品久久中文字幕佐佐木| 久久免费视频网站| 在线成人一区二区| 亚洲欧美日韩中文视频| 久久久久久一区二区三区| 久久精品视频亚洲| 国产成人福利夜色影视| 欧美在线亚洲一区| 在线看片第一页欧美| 亚洲一区二区三区在线视频| 久久成年人视频| 97国产在线视频| 欧美高清在线视频观看不卡| 最近2019中文字幕第三页视频| 欧美极品第一页| 中文字幕无线精品亚洲乱码一区| 91美女福利视频高清| 亚洲免费成人av电影| 国产精品揄拍一区二区| 精品久久中文字幕| 亚洲福利视频免费观看| 成人免费视频97| 日韩欧美在线播放| 国产成人a亚洲精品| 国产精品久久综合av爱欲tv| 亚洲第一区中文字幕|