gpt4 book ai didi

C# 事件为空

转载 作者:行者123 更新时间:2023-12-04 22:32:35 25 4
gpt4 key购买 nike

我只是在做一个项目,在这个项目中我需要引发和处理一个自定义事件......我只是简化了一点代码并得到了这样的东西:

class Car
{
public int Speed { get; set; }

public delegate void SpeedTooHigh(string message);

public event SpeedTooHigh OnSpeedToHigh;

public Car(int speed)
{
this.Speed = speed;

if (speed >= 100)
{
if (this.OnSpeedToHigh != null)
{
this.OnSpeedToHigh("Car has a too high speed !");
}
}
}
}

和我使用这个类的主类:
class Program
{
static void Main(string[] args)
{
Car car = new Car(120, "Red", "Renault");

car.OnSpeedToHigh += OnCarSpeedToHigh;

Console.WriteLine("Test events");

Console.ReadKey();
}

static void OnCarSpeedToHigh(string message)
{
Console.WriteLine(message);
}
}

当我运行此示例时,似乎 Car 类中的“OnSpeedToHigh”始终为空。
而且我不明白为什么因为我在主类中创建了这个类的一个实例并将速度设置为大于 100 以便调用“this.OnSpeedToHigh(“汽车的速度太高!”)”。

这足以引发事件,实例化类并将速度设置为大于 100 吗?

请让我知道这件事。

最佳答案

您在构造函数中触发事件,但在构造对象之后才向事件添加事件处理程序。

由于您在触发事件时尚未添加任何事件处理程序,因此该事件为空。

您可能不想在构造函数中触发事件,您根本不想使用事件,或者您希望事件是静态的,以便您可以在构造汽车之前添加事件处理程序。

关于C# 事件为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16742862/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com