专业编程基础技术教程

网站首页 > 基础教程 正文

C#中如何设计手动触发“事件”?

ccvgpt 2024-08-28 13:35:34 基础教程 62 ℃

在C#中,事件通常由发布者(即拥有该事件的对象)来触发。这通常在某些特定的操作或状态更改时发生。事件的触发是通过调用类似于方法的事件委托来完成的。

以下是一个简单的示例,展示了如何定义和触发一个事件。

C#中如何设计手动触发“事件”?

using System;
public class DataProvider
{
  // 定义事件
  public event EventHandler<DataEventArgs> DataUpdated;
  // 定义用于传递数据的EventArgs派生类
  public class DataEventArgs : EventArgs
  {
     public double NewData { get; }
     public DataEventArgs(double newData)
    {
       NewData = newData;
    }
  }
  // 某个方法,当数据更新时触发事件
  public void UpdateData(double newData)
  {
     Console.WriteLine("Data is updated.");
    // 触发事件
     DataUpdated?.Invoke(this, new DataEventArgs(newData));
  }
}
public class Program
{
  static void Main()
  {
    var provider = new DataProvider();
    // 订阅事件
     provider.DataUpdated += (sender, e) => {
     Console.WriteLine(#34;Received updated data: {e.NewData}");
  };
  // 触发数据更新,这会间接触发事件
     provider.UpdateData(42);
  }
}

在这个例子中,我们定义了一个名为DataProvider的类,该类有一个DataUpdated事件。我们在UpdateData方法中触发了这个事件。在主函数Main中,我们订阅了这个事件,并提供了一个当事件触发时要执行的委托(也就是一个匿名方法)。

这样,当UpdateData方法被调用(模拟数据的更新)时,所有订阅了DataUpdated事件的方法都会被调用。

这是一个非常简单的例子,但它展示了如何定义、触发和订阅事件的基本概念。在复杂的应用程序中,这些概念可以用于建立非常灵活和强大的交互模式。

Tags:

最近发表
标签列表