zhcn 编程语言 Golang Go 文件处理 非公開: C# 事件(事件)

C# 事件(事件)

在 C# 中,事件可以被视为一系列用户交互,例如键盘按键单击、鼠标单击/移动等。当事件发生时,您可以对该事件做出一系列响应。 、程序终止、日志记录等。 C#中线程之间的通信是使用事件机制来实现的。

事件必须在类中声明和激发,并通过委托与事件处理程序关联。事件可以分为两部分:发布者和订阅者。发布者是包含事件和委托的对象。事件和委托之间的关系也在此类中定义。发布者类的对象可以被触发。代表通知其他对象。订阅者是接收事件并提供事件处理程序的对象,发布者类的委托调用订阅者类上的方法(事件处理程序)。

本次活动应注意以下几点:

  • 发布者决定何时触发事件,订阅者决定响应该事件做什么。
  • 事件可以有多个订阅者,订阅者也可以处理来自多个发布者的事件。
  • 没有订阅者的事件永远不会触发。
  • 事件通常用于定义用户操作,例如单击按钮。
  • 如果一个事件有多个订阅者,则在触发该事件时会同步调用所有事件处理程序。
  • 在 .NET 类库中,事件基于 EventHandler 委托和 EventArgs 基类。

要在类中声明事件,必须首先声明事件的委托类型。例如:

public delegate void delegate_name(string status);

然后使用 event 关键字声明事件本身,如下所示:

// 基于上面的委托定义事件
public event delegate_name event_name;

在上面的示例中,定义了名为 delegate_name 和 event_name 的事件,并在触发事件时调用委托。

[使用示例] 下面,我们将通过一个具体的示例来说明如何使用事件。

 using System;

namespace it-kiso.com
{
    class Demo
    {
        static void Main(string[] args){
            PublisherDemo e = new PublisherDemo(); /* インスタンス化発行者クラス*/
            SubscriberDemo v = new SubscriberDemo(); /* インスタンス化購読者クラス */
            e.MyEvent += new PublisherDemo.MyEntrust( v.printf );
            e.SetValue("IT基礎");
        }
    }
    
    /***********発行者クラス***********/
    public class PublisherDemo{
        private string value;

        public delegate void MyEntrust(string str);

        public event MyEntrust MyEvent;

        public void SetValue( string s ){
            value = s;
            MyEvent(value);     // イベントを発生する
        }
    }

    /***********購読者クラス***********/
    public class SubscriberDemo{
        public void printf(string str){
            Console.WriteLine(str);
        }
    }
} 

操作的结果将是:

IT基礎

通俗易懂的《C#事件》讲解!您必须观看的最佳 2 个视频

C# Programming Event Handlers
https://www.youtube.com/watch?v=4Q2Dp1BWd70&pp=ygUkQyMg44Kk44OZ44Oz44OIICjjgqTjg5njg7Pjg4gpJmhsPUpB
在 C# 中,事件可以被视为一系列用户交互,例如键盘按键单击、鼠标单击/移动等。当事件发生时,您可以对该事件做出一系列响应。 、程序终止、日志记录等。 C#中线程之间的通信是使用事件机制来实现的。

事件必须在类中声明和激发,并通过委托与事件处理程序关联。事件可以分为两部分:发布者和订阅者。发布者是包含事件和委托的对象。事件和委托之间的关系也在此类中定义。发布者类的对象可以被触发。代表通知其他对象。订阅者是接收事件并提供事件处理程序的对象,发布者类的委托调用订阅者类上的方法(事件处理程序)。

本次活动应注意以下几点:

  • 发布者决定何时触发事件,订阅者决定响应该事件做什么。
  • 事件可以有多个订阅者,订阅者也可以处理来自多个发布者的事件。
  • 没有订阅者的事件永远不会触发。
  • 事件通常用于定义用户操作,例如单击按钮。
  • 如果一个事件有多个订阅者,则在触发该事件时会同步调用所有事件处理程序。
  • 在 .NET 类库中,事件基于 EventHandler 委托和 EventArgs 基类。

要在类中声明事件,必须首先声明事件的委托类型。例如:

public delegate void delegate_name(string status);

然后使用 event 关键字声明事件本身,如下所示:

// 基于上面的委托定义事件
public event delegate_name event_name;

在上面的示例中,定义了名为 delegate_name 和 event_name 的事件,并在触发事件时调用委托。

[使用示例] 下面,我们将通过一个具体的示例来说明如何使用事件。

 using System;

namespace it-kiso.com
{
    class Demo
    {
        static void Main(string[] args){
            PublisherDemo e = new PublisherDemo(); /* インスタンス化発行者クラス*/
            SubscriberDemo v = new SubscriberDemo(); /* インスタンス化購読者クラス */
            e.MyEvent += new PublisherDemo.MyEntrust( v.printf );
            e.SetValue("IT基礎");
        }
    }
    
    /***********発行者クラス***********/
    public class PublisherDemo{
        private string value;

        public delegate void MyEntrust(string str);

        public event MyEntrust MyEvent;

        public void SetValue( string s ){
            value = s;
            MyEvent(value);     // イベントを発生する
        }
    }

    /***********購読者クラス***********/
    public class SubscriberDemo{
        public void printf(string str){
            Console.WriteLine(str);
        }
    }
} 

操作的结果将是:

IT基礎

通俗易懂的《C#事件》讲解!您必须观看的最佳 2 个视频

C# Programming Event Handlers
https://www.youtube.com/watch?v=4Q2Dp1BWd70&pp=ygUkQyMg44Kk44OZ44Oz44OIICjjgqTjg5njg7Pjg4gpJmhsPUpB