前言:
眼前大家对“委托调用方法有哪几种”可能比较珍视,兄弟们都需要学习一些“委托调用方法有哪几种”的相关知识。那么小编同时在网络上汇集了一些关于“委托调用方法有哪几种””的相关内容,希望看官们能喜欢,兄弟们快快来学习一下吧!在C#中,委托(delegate)和匿名方法(anonymous method)都是用于实现事件或委托编程的关键概念。这些特性让你可以创建委托类型,这些委托类型可以封装方法的引用,这使得可以以一种更高级、更抽象的方式来处理事件或其他的方法调用。
委托
委托是一种引用类型,它们可以封装一个方法的引用。简单来说,委托就是一种指向方法的“引用”。委托的声明定义了被引用方法的签名。一旦定义了委托,就可以将一个方法分配给委托实例。然后可以将这个委托实例传递给方法,以便在另一个地方调用该方法。
匿名方法
匿名方法是一种没有名字的方法,它们是用Lambda表达式来声明的,并且可以作为委托的参数。这种特性使得你可以写出一个简单的方法,然后将其传递给其他方法,而不是写出一个完整的方法名称。
综合练习-自定义委托并使用
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace DelegateAndLamada{ internal class Program { public delegate int MyDelegate(int x, int y);//定义一个委托类型 static void Main(string[] args) { MyClass tc = new MyClass(); MyDelegate md = tc.Add; //创建委托类型的实例md,并绑定到Add方法 int intSum = md(2, 3); //委托的调用 Console.WriteLine("运算结果是:" + intSum.ToString()); } } public class MyClass { public int Add(int x, int y) { return x + y; } }}
综合练习-分别调用匿名方法和命名方法
完整示例代码:
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace LamadaUsename{ delegate void DelOutput(string dele);//自定义委托 internal class Program { static void NamedMethod(string method)//与委托匹配的命名方法 { Console.WriteLine(method); } static void Main(string[] args) { //委托的引用指向匿名方法delegate(string j){} DelOutput del = delegate (string use) { Console.WriteLine(use); }; del.Invoke("匿名方法被调用");//委托对象del调用匿名方法 //del("匿名方法被调用");//委托也可使用这种方式调用匿名方法 Console.Write("\n"); del = NamedMethod;//委托绑定到命名方法NamedMethod del("命名方法被调用");//委托对象del调用命名方法 } }}
标签: #委托调用方法有哪几种