C#之委托 阳光穿透心脏的1/2处 2022-09-24 05:22 160阅读 0赞 **1.委托 **关键字 delegate 声明(通俗了解,结合面向生活的思想---委托就是委托他人,是一个具体的命令或者指派、选择) **定义方法:** public delegate void xxxxEventHandler(); 委托让我们可以把函数引用保存在变量中。这就像在 C++ 中使用 typedef 保存函数指针一样。 看看这个例子,你可以理解什么是委托: 例子: pulic delegate int OperationEventHandler(int val1, int val2); public int Add(int val1, int val2) { return val1 + val2; } public int Subtract (int val1, int val2) { return val1- val2; } public void Perform() { OperationEventHandler Oper; Console.WriteLine("Enter + or - "); string optor = Console.ReadLine(); Console.WriteLine("Enter 2 operands"); string opnd1 = Console.ReadLine(); string opnd2 = Console.ReadLine(); int val1 = Convert.ToInt32 (opnd1); int val2 = Convert.ToInt32 (opnd2); if (optor == "+") Oper = new OperationEventHandler(Add); else Oper = new OperationEventHandler(Subtract); Console.WriteLine(" Result = {0}", Oper(val1, val2)); **2.** **委托注意事项:** 1、委托和方法必须具有相同的参数。 2、委托可以调用多个方法,即一个委托对象可以维护一个可调用方法的列表而不是单独的一个方法,称为多路广播(多播)。 3、使用+=和-=运算实现方法的增加和减少 using System; using System.Collections.Generic; using System.Linq; using System.Text; using Delegate; namespace Delegate { //第1步:定义委托类型 public delegate int CallEventHandler(int a, int b); class SimpleMath { // 乘法方法 public int Multiply(int a, int b) { return a * b; } // 除法方法 public int Divide(int a, int b) { return a / b; } } } class Test { static void Main(string[] args) { //第2步:声明委托对象 CallEventHandler objCall; // Math 类的对象 SimpleMath objMath = new SimpleMath(); // 第3步:创建委托对象,将方法与委托关联起来 objCall = new CallEventHandler(objMath.Multiply); CallEventHandler objCall1 = new CallEventHandler(objMath.Divide); //向委托增加一个方法 objCall += objCall1; //向委托减去一个方法 //objCall -= objCall1; // 调用委托实例,先执行objMath.Multiply,然后执行objMath.Divide,有注册顺序 int result = objCall(5, 3); System.Console.WriteLine("结果为 {0}", result); Console.ReadKey(); } } 3.写法2 1、委托 委托名=new 委托(会调用的方法名); 委托名(参数); 2、委托 委托名 =会调用的方法名; 委托名(参数); 3、匿名方法 委托 委托名=delegate(参数)\{会调用的方法体\};委托名(参数); 4、拉姆达表达式 委托 委托名=((参数1,。。参数n)=>\{会调用的方法体\});委托名(参数); 5、用Action<T>和Func<T>,第一个无返回值 Func<参数1, 参数2, 返回值> 委托名= ((参数1,参数2) => \{带返回值的方法体 \});返回值=委托名(参数1,参数2); using System; using System.Collections.Generic; using System.Linq; using System.Text; using @delegate; namespace @delegate { public delegate int CallEventHandlerEventHandler(int num1, int num2); class SimpleMath { // 乘法方法 public static int Multiply(int num1, int num2) { return num1 * num2; } // 除法方法 public int Divide(int num1, int num2) { return num1 / num2; } } class Test { static void Main(string[] args) { //--------------------第一种写法------------------------// //CallEventHandler objCallEventHandler = new CallEventHandlerEventHandler(SimpleMath.Multiply); //CallEventHandler objCallEventHandler1 = new CallEventHandler(new SimpleMath().Divide); //--------------------第二种写法------------------------// //CallEventHandler objCallEventHandler = SimpleMath.Multiply; //CallEventHandler objCallEventHandler1 = new SimpleMath().Divide; //--------------------第三种写法------------------------// //CallEventHandler objCallEventHandler = delegate(int a, int b) //{ // return a * b; //}; //CallEventHandler objCallEventHandler1 = delegate(int a, int b) //{ // return a / b; //}; //--------------------第四种写法------------------------// //CallEventHandler objCallEventHandler =((int a,int b)=> { return a*b;}); //CallEventHandler objCallEventHandler1 = ((int a, int b) => { return a / b; }); //--------------------第五种写法------------------------// Func<int, int, int> objCallEventHandler = ((a, b) => { return a * b; }); Func<int, int, int> objCallEventHandler1 = ((a, b) => { return a / b; }); Action<int, int> ob = ((a, b) => { Console.WriteLine(a * b); }); ob(5, 3); //----------------------------------------------------// int result = objCallEventHandler(5, 3); int result1 = objCallEventHandler1(5, 3); System.Console.WriteLine("结果1为 {0},结果2为{1}", result,result1); Console.ReadKey(); } } }
相关 C#委托 一、什么是委托 委托是一种类型,就跟int,double,struct,string,class一样。它定义了一个函数的类型。现在,我们有一个方法,我们希望它的参数是某个 川长思鸟来/ 2024年02月17日 22:49/ 0 赞/ 64 阅读
相关 C#——委托 C\——委托 委托是一种引用类型,表示对具有特定参数列表和返回类型的方法的引用。 在实例化委托时,你可以将其实例与任何具有兼容签名和返回类型的方法相关联。 你可以通过委托 冷不防/ 2023年01月03日 04:22/ 0 赞/ 240 阅读
相关 C#之委托 1.委托 关键字 delegate 声明(通俗了解,结合面向生活的思想---委托就是委托他人,是一个具体的命令或者指派、选择) 定义方法: pu 阳光穿透心脏的1/2处/ 2022年09月24日 05:22/ 0 赞/ 161 阅读
相关 C#委托 委托: 委托定义了方法的类型,使得方法可以作为另一个方法的参数来进行传递,这样可以在程序中避免使用大量的判断语句,同时使程序具有更好的扩展性。 可以将多个方法绑定到同一个委 矫情吗;*/ 2022年09月17日 07:28/ 0 赞/ 197 阅读
相关 C#5.0之委托 一、自从C\3.0开始,可以使用一种新语法把实现代码赋予委托操作,那就是lambda表达式。 使用条件:只要有委托参数类型的地方,就可以使用lambda表达式。 好处:使用 淩亂°似流年/ 2022年08月18日 10:58/ 0 赞/ 112 阅读
相关 C#之委托 \------------------------- 关于委托的一些事儿 ------------------------------------- 委托 delegate是 偏执的太偏执、/ 2022年08月02日 12:41/ 0 赞/ 152 阅读
相关 c#委托 首先创建个控制台应用程序在Program下创建一个无参数无返回值的静态方法,可以输出一句话 static void Text() { Cons 迈不过友情╰/ 2022年04月16日 06:15/ 0 赞/ 258 阅读
相关 C# 委托 一、什么是委托? 初次理解这么抽象的概念确实有点挺难的,如果学过C语言,可能知道C语言里可以把一个方法当做参数来传递,委托大概类似也是这样一个原理。 想象一下,在一个 ゞ 浴缸里的玫瑰/ 2022年04月08日 12:15/ 0 赞/ 281 阅读
相关 C# 委托 委托 作用:将多个参数相同的方法,进行委托统一调用,将参数和调用方法传递给委托,由委托调用。 好处:可以将多个方法内相同的部分提取出来,根据参数和方法参数,调用需要的 ゝ一世哀愁。/ 2021年10月14日 02:00/ 0 赞/ 384 阅读
相关 C# 委托 什么是委托? 委托是寻址方法的.NET版本,使用委托可以将方法作为参数进行传递。委托是一种特殊类型的对象,其特殊之处在于委托中包含的是一个或多个方法的地址,而不是数据。委 谁践踏了优雅/ 2021年06月24日 16:10/ 0 赞/ 499 阅读
还没有评论,来说两句吧...