与输出参数
处理委托我有一个委托和事件与一个输出参数:与输出参数
公众委托无效ExampleDelegate(对象发件人,EventArgs的,出字符串值);
公共事件ExampleDelegate示例;
当我试图对事件进行处理:
mg.Example += (sender, e, val) =>
{
//do stuff
};
,我发现了错误参数3必须声明与“出”关键字
当我抛出建议的关键字像这样:
mg.Example += (sender, e, out val) =>
{
//do stuff
};
我得到和额外的错误命名空间名称'val'的类型无法找到..等等
我在做什么错?
事件处理程序没有确认到.NET的准则。
如果您必须像这样使用它,请使用委托而不是事件。
如果你有两个事件处理程序修改你的输出参数,你会遇到麻烦。
.NET框架准则
虽然C#语言允许事件使用任何委托类型, .NET框架对委托类型 应该是一些严格的指导方针用于事件。如果您打算将组件与.NET Framework一起使用 ,则可能需要遵循这些 准则。
.NET框架准则指出,用于 委托类型的事件应采取两个参数,一个“对象源”参数 指示事件的源,和一个“e”参数 封装的任何附加信息关于事件。 “e”参数的类型应该从EventArgs类派生。对于不使用任何附加信息的事件 ,.NET Framework 已经定义了适当的委托类型:EventHandler。
zmbq已经为您提供了如何纠正错误的答案。
我加入这只是为了完整性。
谢谢,感谢 – 2012-07-17 13:07:23
好,因为它清楚地说:here,你需要指定val
类型:
(sender, e, out string val)=> ...
关于您链接到的答案的说明表示您需要指定* all *参数的类型。 – 2012-07-17 12:42:39
似乎这样做。 – 2012-07-17 13:06:28
你打破了事件处理程序的设计。改为创建自己的EventArgs类。 – 2012-07-17 12:33:50
@AmiramKorach您的答案是我正在寻找的答案 – 2012-07-17 13:24:04