C# 委托与事件的区别及应用场景

编程入门 行业动态 更新时间:2024-10-19 09:45:09

C# 委托与事件的区别及应用<a href=https://www.elefans.com/category/jswz/34/1770727.html style=场景"/>

C# 委托与事件的区别及应用场景

文章目录

  • 一、什么是委托?
  • 二、委托使用步骤
    • 1.声明委托
      • 1.1实例化委托
      • 1.2委托调用
      • 1.3委托使用场景
      • 1.4系统内置委托Action Func
      • 1.5 多播委托
  • 二、什么是事件
    • 1.声明事件
    • 1.1事件调用
      • 1.3事件使用场景
      • 1.4 事件与设计模式


一、什么是委托?

委托是寻址方法的.Net版本,在C++中,函数指针只是指向内存位置,不是类型安全的。你无法得知这个指针实际指向什么,参数类型、返回类型也无从得知。而.Net委托是一个类型安全的类,它定义了返回类型、参数类型。从IL中看它是继承至MulticastDelegate,所以委托可以说其实就是个类。

功能上而言:当要把方法作为传送给其他方法时,就需要使用委托

C#:

IL:上图代码在IL编译后的结果,可知其继承自父类 MulticastDelegate

二、委托使用步骤

1.声明委托

定义委托就是告诉编译器这种类型的委托表示那种类型的方法

//声明一个委托public delegate void Voiddelegate( int x);// 声明一个委托,委托所包含的方法带有一个int参数,并且返回Voidpublic delegate void Void_delegate();//委托所包含的方法无参数,并且返回Voidpublic delegate int IntDelegate();// 委托所包含的方法无参数,并且返回intpublic delegate int Int_Delegate(int x);// 委托所包含的方法带有一个int参数,并且返回Void

定义委托等同于定义一个新类,所以可以在任何地方定义、加上任何修饰符public、private…

1.1实例化委托

实例化时必须传递一个和委托的参数及返回值相同的方法

 IntDelegate intDelegate = new IntDelegate(test);public static int test(){return 1;}

1.2委托调用

            intDelegate.Invoke();intDelegate();//两者等价,可以省略invoke//参数①:AsyncCallback是异步完成的回调方法。//参数②是用户自定义对象,该对象将传递到回调方法中intDelegate.BeginInvoke(null, null);//重新开一个新线程去执行方法intDelegate.EndInvoke(null);//检测异步调用的结果,通常放在回掉函数中

1.3委托使用场景

用于解耦、减少代码不稳定性、减少重复代码

 public class A{public delegate void Str_Delegate(string type);public void sayCat(

更多推荐

C# 委托与事件的区别及应用场景

本文发布于:2024-03-14 18:38:39,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1737094.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:场景   区别   事件

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!