我的代码中定义了一个委托:
public bool delegate CutoffDateDelegate( out DateTime cutoffDate );
我想使用lambda或匿名函数来创建委托和初始化,但是这些都不编译.
CutoffDateDelegate del1 = dt => { dt = DateTime.Now; return true; }CutoffDateDelegate del2 = delegate( out dt ) { dt = DateTime.Now; return true; }
有办法吗?
解决方法 您可以使用lambda或匿名委托语法 – 您只需要指定参数的类型,并将其标记为out:public delegate bool CutoffDateDelegate( out DateTime cutoffDate );// using lambda Syntax:CutoffDateDelegate d1 = (out DateTime dt) => { dt = DateTime.Now; return true; };// using anonymous delegate Syntax:CutoffDateDelegate d2 = delegate( out DateTime dt ) { dt = DateTime.Now; return true; }
虽然显式声明参数为ref / out是预期的,但是必须在lambda表达式中声明参数类型不太常见,因为编译器可以正常推断它们.但是在这种情况下,编译器当前不会在lambda / anon表达式中推断出out或ref参数的类型.我不确定这种行为是否是一个错误/监督,或者如果有一个语言为什么这必须是这样,但有一个很容易的解决方法.
编辑:我做了一个快速检查VS2010 beta2,它仍然看起来像您必须定义参数类型 – 它们不推断为C#4.
总结以上是内存溢出为你收集整理的c# – 编写一个接受out参数的lambda或匿名函数全部内容,希望文章能够帮你解决c# – 编写一个接受out参数的lambda或匿名函数所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)