而是直接将Function 指定给委托

时间:2021-12-22 06:50:33

1.什么是委托,为什么要使用委托

我正在埋头苦写措施,俄然想喝水,但是又不想本身去失杯水而打断本身的思路,于是我就想让女伴侣去给我倒水。她去给我倒水,首先我得让她知道我想让她干什么,通知她之后我可以继续写本身的措施,而倒水的事情就交给了她。这样的过程就相当于一个委托。

在措施过程中,当措施正在措置惩罚惩罚某个事件的时候,我需要此外的措施代码去帮助措置惩罚惩罚一些工作,于是委托另一个措施模块去措置惩罚惩罚,而委托就可以到达这种目的,我可以操作委托通知此外的措施模块,该去挪用哪个函数要领。委托其实就起到了这样一个感化,将函数签名通报到了另一个函数中。或许这样讲还是有些模糊,看看后面的具体实例。

2.委托的界说

delegate int Add(int num1,int num2);

delegate void ConvertNum(string result);

上面是界说两个委托的例子,其实很简单。声明一个委托使用delegate关键字,上面分袂是界说的带返回值的委托和不带返回值的委托, 

两个委托都有通报参数,固然也可以不通报参数。其实委托也是一个类,委托派生为System.MulticastDelegate,而System.MulticastDelegate

又担任System.Delegate,如果你知道这个也就大白委托其实是一个特殊的类。

委托的简单实用例子Code highlighting produced by Actipro CodeHighlighter (freeware)http://> 1 public delegate string TeaDelegate(string spText); public class DelegateSource { public void TestDelegate() { Operator op = new Operator(); TeaDelegate tea = new TeaDelegate(op.GetTea); Console.WriteLine("去给我倒杯水"); Console.WriteLine(); string result=tea("去给我倒杯水"); Thread.Sleep(5000); Console.WriteLine(result); Console.WriteLine(); } } public class Operator { /// <summary> /// 确定是否还有水 /// </summary> private bool flag = true; public string GetTea(string spText) { if (spText == "去给我倒杯水") { if (flag) { return "老公,茶来了"; } else { return "老公,没有水了"; } } return "期待......."; } }

View Code

输出功效

而是直接将Function 指定给委托

 

上面使用最普通的一种方法来界说了一个委托的使用,这个例子虽然很简单,但是能够很形象的描述委托的使用。

3.委托的三种形式

(1).揣度

揣度委托例子Code highlighting produced by Actipro CodeHighlighter (freeware)http://> 1 public delegate string TeaDelegate(string spText); public class DelegateSource { public void TestDelegate() { Operator op = new Operator(); TeaDelegate tea = op.GetTea; Console.WriteLine("去给我倒杯水"); Console.WriteLine(); string result=tea("去给我倒杯水"); Thread.Sleep(5000); Console.WriteLine(result); Console.WriteLine(); } } public class Operator { /// <summary> /// 确定是否还有水 /// </summary> private bool flag = true; public string GetTea(string spText) { if (spText == "去给我倒杯水") { if (flag) { return "老公,茶来了"; } else { return "老公,没有水了"; } } return "期待......."; } }

View Code