当前位置: 首页> 文旅> 酒店 > C# 事件(Event)

C# 事件(Event)

时间:2025/8/12 4:38:17来源:https://blog.csdn.net/2302_77639120/article/details/141172932 浏览次数:0次

C# 事件(Event)是一种成员,用于将特定的事件通知发送给订阅者。事件通常用于实现观察者模式,它允许一个对象将状态的变化通知其他对象,而不需要知道这些对象的细节。

  1. 事件的定义:使用 event 关键字定义事件,通常放在类的公共或私有部分。

  2. 委托:事件需要一个委托类型,委托是一种特殊的类型,定义了方法的签名。

  3. 事件的触发:使用 raise 关键字或 EventHandler 类的 Invoke 方法来触发事件。

  4. 事件的订阅和取消订阅:使用 +=-= 运算符来订阅和取消订阅事件。

事件主要包括三个部分:
1. 事件的订阅者(控件,比如:Button)
2. 事件的触发者(各种操作,比如:点击)
3. 订阅者和触发者之间的数据传输通道(事件句柄:一头连接着订阅者,一头连接着触发者)

事件基本上说是一个用户操作,如按键、点击、鼠标移动等等,或者是一些提示信息,如系统生成的通知。应用程序需要在事件发生时响应事件。

事件具体是什么:

(1)事件是委托实例,增加一个关键字Event,是特殊的委托(用委托生成的一个变量而异)
(2)事件只能在当前类被访问,子类和类外部均不能执行类中的事件方法(安全)
(3)委托和事件从本质上来说没啥区别(事件基于委托,没有委托,就没事件。)

事件本质:指委托的实例。事件肯定是委托,但委托不一定是事件。

C#语言中的事件:事件是委托的实例(个体),委托的实例不一定是事件,但事件肯定是委托的实例。事件是一种特殊的委托实例。

事件只能定义在类内部,不能在方法内部

internal class Program
{//定义一个事件,使用event关键字。,EventHandler委托类型  MyClick就是委托实例,即事件变量。public static event EventHandler MyClick;static void Main(string[] args){//委托不一定是事件,但事件一定是委托//委托实例,不是事件EventHandler click1 = new EventHandler((sender, arg) => { });//定义事件,实例化事件(和委托实例化基本一致。只是第一初始化时,也可以使用+=或-=)MyClick = Program_MyClick;//第一次赋值MyClick += Program_MyClick1;//第二次赋值MyClick += delegate (object sender, EventArgs arg){Console.WriteLine("匿名委托");};MyClick += (sender, arg) =>{Console.WriteLine("拉姆达语句");};//调用事件MyClick(null,null);MyClick.Invoke(null,null);Console.ReadKey();}private static void Program_MyClick(object sender, EventArgs e){Console.WriteLine("第一次赋值");}private static void Program_MyClick1(object sender, EventArgs e){Console.WriteLine("第二次赋值");}
}

关键字:C# 事件(Event)

版权声明:

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

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

责任编辑: