C#中如何实现事件?

我正在寻求关于C#中如何实现事件的解决方案。我正在尝试在我自己的代码中实现一个事件,但是我不确定该如何开始。我相信了解事件是如何工作的以及如何在代码中定义事件是实现这一功能的关键。如果有哪位老师能够提供一些帮助或指导,那将不胜感激。我期待着能够更深入地了解C#中的事件,以便能够成功地将其实现在我的代码中。

提问时间:2023-07-24 03:19:44 编辑时间:2023-07-24 03:19:46 提问者: Thunderbolt_Strike
  • 雪落江南
    8

    在C#中,可以通过使用delegate和event关键字来实现事件。首先定义委托类型,然后定义一个事件,将该委托类型作为事件的类型,并在适当的情况下触发该事件。以下是一个示例代码:

    // 定义委托类型
    public delegate void MyEventHandler(object sender, EventArgs e);
    
    // 定义事件类
    public class MyClass
    {
        public event MyEventHandler MyEvent;
    
        public void DoSomething()
        {
            // 在适当的情况下触发事件
            if (MyEvent != null)
            {
                MyEvent(this, EventArgs.Empty);
            }
        }
    }
    
    // 使用事件
    public class Program
    {
        static void Main(string[] args)
        {
            MyClass myObj = new MyClass();
            myObj.MyEvent += MyEventHandlerMethod;
    
            myObj.DoSomething();
        }
    
        private static void MyEventHandlerMethod(object sender, EventArgs e)
        {
            Console.WriteLine("My event is triggered.");
        }
    }
    

    在上面的代码中,我们首先定义了一个委托类型MyEventHandler,它有两个参数:一个是object类型的事件发送者,另一个是EventArgs类型的事件参数。然后我们定义了一个事件MyEvent,它的类型是MyEventHandler类型。在MyClass类的DoSomething方法中,我们检查是否有事件处理程序订阅了该事件,如果有,则调用事件处理程序。在Program类中,我们实例化MyClass类,并将MyEventHandlerMethod方法作为事件处理程序订阅MyEvent事件,并在调用DoSomething方法时触发该事件。当事件被触发时,MyEventHandlerMethod方法将被调用。

    回答时间:2023-07-24 03:19:49