C#:什么是虚拟事件,如何使用它们?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (108)

虚拟事件是如何工作的?

提问于
用户回答回答于

例子

using System;

class Base
{
    public virtual event EventHandler Foo
    {
        add
        {
            Console.WriteLine("Base Foo.add called");
        }
        remove
        {
            Console.WriteLine("Base Foo.remove called");
        }
    }
}

class Derived : Base
{
    public override event EventHandler Foo
    {
        add
        {
            Console.WriteLine("Derived Foo.add called");
        }
        remove
        {
            Console.WriteLine("Derived Foo.remove called");
        }
    }
}

class Test
{
    static void Main()
    {
        Base x = new Derived();

        x.Foo += (sender, args) => {};
    }
}
用户回答回答于

在C#中,派生类不能激发纯粹在基类中定义的事件。因此,我们要么需要为派生类设置一个新的或重写的事件,而且在大多数情况下,如果要激发相同的事件,则首选使用重写事件。

扫码关注云+社区

领取腾讯云代金券