首页学习C# 事件(Event)的使用例子说明

C# 事件(Event)的使用例子说明

时间2023-12-14 16:18:15入口:最新上传链接:热门分享浏览120
C# 事件(Event)是一种特殊的委托,它允许类或对象在某个特定的时刻通知其他类或对象发生了某个特定的事情。事件常用于实现观察者模式,其中一个对象(称为发布者)会通知其他对象(称为订阅者)发生了某个事件。在本文中,我们将通过几个使用例子来说明C#事件的用法和优势。

例子一:按钮点击事件


假设我们有一个窗体应用程序,其中包含一个按钮。当用户点击该按钮时,我们希望执行一些特定的操作。这可以通过使用C#事件来实现。
首先,我们需要定义一个事件处理程序,它将在按钮被点击时执行。在C#中,事件处理程序是一个方法,它具有与事件相匹配的签名。例如,对于按钮的点击事件,我们可以定义一个名为Button_Click的方法:

private void Button_Click(object sender, EventArgs e)
{
// 执行特定的操作
}


然后,在窗体的构造函数中,我们可以将Button_Click方法与按钮的Click事件关联起来:

public Form1()
{
InitializeComponent();
button1.Click += new EventHandler(Button_Click);
}


现在,当用户点击按钮时,Button_Click方法将被调用,并执行特定的操作。

例子二:自定义事件


除了使用内置的事件(如按钮的Click事件),我们还可以创建自定义事件。这在需要通知其他对象发生特定事件的情况下非常有用。
假设我们有一个名为TemperatureSensor的类,它模拟了一个温度传感器。当温度超过某个阈值时,我们希望通知其他对象。我们可以通过定义一个名为TemperatureChanged的事件来实现:

public class TemperatureSensor
{
public event EventHandler<TemperatureChangedEventArgs> TemperatureChanged;

private int temperature;

public int Temperature
{
get { return temperature; }
set
{
if (value != temperature)
{
temperature = value;
OnTemperatureChanged(new TemperatureChangedEventArgs(temperature));
}
}
}

protected virtual void OnTemperatureChanged(TemperatureChangedEventArgs e)
{
TemperatureChanged?.Invoke(this, e);
}
}

public class TemperatureChangedEventArgs : EventArgs
{
public int Temperature { get; }

public TemperatureChangedEventArgs(int temperature)
{
Temperature = temperature;
}
}


在TemperatureSensor类中,我们定义了一个TemperatureChanged事件,并在温度发生变化时调用OnTemperatureChanged方法来触发事件。该事件使用了自定义的TemperatureChangedEventArgs参数,它包含了温度的值。
现在,其他类可以订阅TemperatureChanged事件,并在温度发生变化时执行相应的操作。例如,我们可以创建一个名为TemperatureLogger的类,它将温度写入日志文件:

public class TemperatureLogger
{
public TemperatureLogger(TemperatureSensor sensor)
{
sensor.TemperatureChanged += new EventHandler<TemperatureChangedEventArgs>(Sensor_TemperatureChanged);
}

private void Sensor_TemperatureChanged(object sender, TemperatureChangedEventArgs e)
{
// 将温度写入日志文件
Console.WriteLine("Temperature changed: " + e.Temperature);
}
}


在TemperatureLogger的构造函数中,我们订阅了TemperatureChanged事件,并指定了一个事件处理程序。当TemperatureChanged事件被触发时,Sensor_TemperatureChanged方法将被调用,并将温度写入日志文件。
现在,当TemperatureSensor的温度发生变化时,TemperatureLogger将收到通知并执行相应的操作。

例子三:事件的多播


事件还支持多播(Multicast),即一个事件可以有多个事件处理程序。这允许多个对象同时订阅同一个事件

免责声明:本文由用户上传,此文本数据来源于原作者,如有侵权请联系删除!转载此文是出于传递更多信息之目的。若有来源标注错误或侵犯了您的合法权益,请作者持权属证明与本网联系,我们将及时更正、删除,谢谢。

如何把晚安说的高级一点(优选11条) 寒潮已发货!“蹦极式”降温要来了......