龙空技术网

综合练习(16-6)委托和匿名方法-C#编程零基础到入门学习

天道格律随笔 97

前言:

眼前大家对“委托调用方法有哪几种”可能比较珍视,兄弟们都需要学习一些“委托调用方法有哪几种”的相关知识。那么小编同时在网络上汇集了一些关于“委托调用方法有哪几种””的相关内容,希望看官们能喜欢,兄弟们快快来学习一下吧!

在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调用命名方法        }    }}

运行结果

标签: #委托调用方法有哪几种