我在A类中有一个SelectionChanged事件,我希望通过B类中继承。我曾经以为在B类中声明一个SelectionChanged事件,并将此EventHandler分配给A.SelectionChanged,会导致每当A.SelectionChanged被触发时,B.SelectionChanged也会被触发 - 但事实证明这是错误的。
更清晰一些的代码:
class A
{
public event EventHandler SelectionChanged;
public void TriggerSelectionChanged()
{
if (SelectionChanged != null) SelectionChanged(this, EventArgs.Empty);
}
}
class B
{
private A _a = new A();
public A A { get { return _a; } }
public event EventHandler SelectionChanged;
public B()
{
A.SelectionChanged += SelectionChanged;
}
public static void Test()
{
B relayer = new B();
bool wasRelayed = false;
relayer.SelectionChanged += delegate { wasRelayed = true; };
relayer.A.TriggerSelectionChanged();
System.Console.WriteLine("Relayed: {0}", wasRelayed);
}
}
这将打印出“Relayed: false”。 向另一个EventHandler添加EventHandler的效果是什么? 编辑:请注意!我知道解决此问题的方法是通过委托、函数等中继事件,但我更想知道这段代码的影响。