如何解决C#事件未引发
因此,我正在尝试学习事件,并且已经完成了引发和收听一个简单事件所需的所有工作,但是运行代码时我什么也没收到反馈。只需忽略该事件,仅计算Hello世界。我有两个类,一个是简单的Car类,另一个是Owner类。
在汽车课上,我创建了一个事件,并根据Microsoft文档的说法将其引发。 在所有者类中,我通过调用函数来收听它,然后订阅它。仍然没有任何反应。请帮助,我将放弃这个。
//--------CAR CLASS-----//
using System;
namespace EventsTutorial
{
public class Car
{
public event EventHandler<int> CarOnEvent;
public Car(string name,string colour,int id)
{
Name = name;
Colour = colour;
IsOn = false;
Id = id;
TurnOn(id);
}
public string Name { get; set; }
public string Colour { get; set; }
public bool IsOn { get; private set; }
public int Id { get; set; }
protected virtual void TurnOn(int e)
{
EventHandler<int> handler = CarOnEvent;
handler?.Invoke(this,e);
}
}
}
//-----------OWNER CLASS-------------
using System;
namespace EventsTutorial
{
class MainClass
{
public static void Main(string[] args)
{
Console.WriteLine(" World!");
Car mycar = new Car("Toyota","Black",1);
mycar.CarOnEvent += Mycar_CarOnEvent;
}
private static void Mycar_CarOnEvent(object sender,int e)
{
Car var = (Car)sender;
Console.WriteLine("The car {0},is now on",var.Name);
}
}
}
解决方法
在有人附加到事件之前,您正在TurnOn
构造函数中调用Car
。
您必须先附加到活动,然后致电TurnOn
。
//New car constructor...
public Car(string name,string colour,int id)
{
Name = name;
Colour = colour;
IsOn = false;
Id = id;
}
//New TurnOn
protected virtual void TurnOn()
{
EventHandler<int> handler = CarOnEvent;
handler?.Invoke(this,this.Id);
}
//New main...
public static void Main(string[] args)
{
Console.WriteLine(" World!");
Car mycar = new Car("Toyota","Black",1);
mycar.CarOnEvent += Mycar_CarOnEvent;
myCar.TurnOn()
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。