未引发 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()
}