未引发 C# 事件
C# Events not being raised
所以我正在尝试学习事件,并且我已经完成了引发和收听一个简单事件所需的所有工作,但是当我 运行 代码时,我根本没有得到任何反馈。该事件被简单地忽略,只计算 Hello world。我有两个 classes,一个是简单的 Car class,另一个是 Owner class.
在车上class,我创建了事件并按照微软文档中的描述进行了Raise。
在所有者 class 中,我通过调用函数然后订阅它来收听它。尽管如此,什么也没有发生。请帮忙,我要放弃了。
//--------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);
}
}
}
您正在 Car
构造函数中调用 TurnOn
,在任何人附加到事件之前。
您必须先附加到事件,然后调用 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()
}
所以我正在尝试学习事件,并且我已经完成了引发和收听一个简单事件所需的所有工作,但是当我 运行 代码时,我根本没有得到任何反馈。该事件被简单地忽略,只计算 Hello world。我有两个 classes,一个是简单的 Car class,另一个是 Owner class.
在车上class,我创建了事件并按照微软文档中的描述进行了Raise。 在所有者 class 中,我通过调用函数然后订阅它来收听它。尽管如此,什么也没有发生。请帮忙,我要放弃了。
//--------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);
}
}
}
您正在 Car
构造函数中调用 TurnOn
,在任何人附加到事件之前。
您必须先附加到事件,然后调用 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()
}