C#中有两个类a和b!a类里面一个say方法里面绑定了一个事件!b类里面触发这个事件!如果不调用a里面的say方法,事件还会运行吗?
时间: 2024-10-16 13:06:36 浏览: 17
在C#中,如果事件是通过`event`关键字定义并在`a`类中绑定的,那么在`b`类中通过事件名直接触发该事件,即使不通过`a`类的实例去调用`say`方法,事件依然会执行。因为事件实际上是一个委托类型的集合,可以独立于调用它的对象而存在。
举个例子:
```csharp
public class A
{
public event EventHandler SayEvent;
// 调用事件的地方
protected virtual void OnSay()
{
SayEvent?.Invoke(this, EventArgs.Empty);
}
}
public class B : A
{
public override void OnSay() => Console.WriteLine("B says something"); // 代替直接调用 say 方法
// 触发事件
public void TriggerSay()
{
base.SayEvent?.Invoke(null, EventArgs.Empty); // 直接触发事件
}
}
```
在这个例子中,`B`类可以通过`base.SayEvent`触发事件,无需创建`A`类的实例并调用`say`方法。所以,只要事件被关联,不调用`a`类的`say`方法也能让事件运行。
阅读全文