欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 新闻 > 社会 > C#中的委托

C#中的委托

2025/9/4 19:06:16 来源:https://blog.csdn.net/weixin_64532720/article/details/140442189  浏览:    关键词:C#中的委托

在C#中,委托(Delegate)是一种特殊的类型,它持有对方法的引用。委托可以指向静态方法、实例方法或Lambda表达式。它们在C#中用于实现回调机制、事件处理以及泛型方法的实现。

委托的主要特点包括:

  1. 类型安全:委托是强类型的,这意味着它们在编译时就确定了要引用的方法的签名。

  2. 多播:委托可以链接多个方法调用。当委托被调用时,它将按顺序调用所有链接的方法。

  3. 灵活性:委托可以用于将方法作为参数传递给其他方法,使得代码更加灵活和模块化。

  4. 匿名方法:可以使用Lambda表达式或匿名方法来定义委托,而不需要显式创建方法定义。

委托是一种引用类型,其实他是一个类,保存方法的指针,,他指向一个方法,当我们调用委托的时候,这个方法就立即被执行

实现委托的三个步骤

1.定义委托

2.实例化委托

3.执行委托

自定义委托

namespace _7._15day02
{public delegate double Add(double x, double y);internal class Program{public static double Add(double x, double y){return x + y;}public static double Sub(double x, double y){
​return x - y;}static void Main(string[] args){
​Add add = new Add(Add);double result1 = add(12.0, 24.0);Console.WriteLine($"这个是加法的结果{result1:F2}");Add add1 = new Add(Sub);double result2 = add1(24.0, 12.0);Console.WriteLine($"这个是减法的结果{result2:F2}");}}
}
​

结果为

泛型委托类型

  1. Action:表示无返回值的方法。可以有0到16个参数。

  2. Func<>:表示有返回值的方法。可以有0到16个参数,并且最后一个参数是返回类型。

  3. Predicate<>:是 Func<T, bool> 的一个特殊形式,用于表示接受一个参数并返回布尔值的方法。

namespace _7._15day01
{internal class Program{public void print(){Console.WriteLine("print");}public int add(int x,int y){return x+y;}
​static void a(int x, Action a){
​a();Console.WriteLine(x);}static int b(int x, Func<int, int, int> s ,int a,int b){return x + s(a, b);}static void Main(string[] args){Program program = new Program();int x = 0;int a1 = 100;int b1= 100;int[] arr = {1,2,3,4,5,6,7};a(x, program.print);int result= b(20,  program.add,40,40);Console.WriteLine("-------------------------------");Console.WriteLine(result);}}
}
​

结果为

多播委托

多播委托 可以使用+=去增加方法

也可以使用 -=去删除方法

可以在一个委托里面加另一个委托 前提是这两个委托是同一个委托

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词