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)
导致问题。
如何为“我的”事件进行正确的默认初始化?
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)
| 归档时间: |
|
| 查看次数: |
2921 次 |
| 最近记录: |