事件默认初始值设定项

hor*_*rgh 3 c# events delegates initializer

我曾经使用以下内容:

public event EventHandler OnComplete = delegate { };
Run Code Online (Sandbox Code Playgroud)

我不确定,这是如何调用的,这是一个“事件默认初始化程序”吗?

但问题似乎是当我从 EventArgs 派生、创建自己的 EventHandler 并决定使用相同的方法时。请参见:

public class MyEventArgs : EventArgs
{
    int result;
    public int Result
    {
        get
        {
            if (exceptionObject == null)
                return result;
            else
                throw new InvalidOperationException();
        }
        internal set { result = value; }
    }

    Exception exceptionObject;
    public Exception ExceptionObject
    {
        get { return exceptionObject; }
        internal set { exceptionObject = value; }
    }
}

public delegate EventHandler MyEventHandler(object sender, MyEventArgs e);

public class MyOperation
{
    public event MyEventHandler OnOperationComplete = delegate { };
}
Run Code Online (Sandbox Code Playgroud)

所以,这条线

public event MyEventHandler OnOperationComplete = delegate { };
Run Code Online (Sandbox Code Playgroud)

导致问题。

如何为“我的”事件进行正确的默认初始化?

THX*_*138 5

public event MyEventHandler OnOperationComplete = (sender, args) => { return null; };
Run Code Online (Sandbox Code Playgroud)

我也认为你想说的是:

public delegate void MyEventHandler(object sender, MyEventArgs e);
Run Code Online (Sandbox Code Playgroud)

不是

public delegate EventHandler MyEventHandler(object sender, MyEventArgs e);
Run Code Online (Sandbox Code Playgroud)