回答我的另一个问题How to send custom event message just after control instantiation?我读了这个:
if (ValueChanged != null)
{
ValueChanged(sender, e);
}
第一种情况下的 ValueChanged 是什么?不是第二条指令中的功能?同一个符号如何用于 ... 和函数?
james 回答后的 uPDATE:如果 ValueChanged 是一个对象,我怎样才能像调用方法一样调用它?它是语法糖还是外来语法,背后有一些神秘的机制,比如调用 ValueChanged.Invoke(sender, e); ?
最佳答案
ValueChanged 是一个多播委托(delegate),它是一个对象。如果没有人订阅该事件,它可以为空,因此进行检查。如果您想避免检查,您可以定义一个空委托(delegate)并将其分配给事件。
public event EventHandler ValueChanged = delegate {};
您现在可以只调用 ValueChanged(sender, e),因为 ValueChanged 永远不会为 null。
关于c# - 我不明白事件委托(delegate)的双重语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4382260/