c# – 编写一个接受out参数的lambda或匿名函数

c# – 编写一个接受out参数的lambda或匿名函数,第1张

概述这个问题在这里已经有一个答案:            >             How to circumvent using an out parameter in an anonymous method block?                                    2 我的代码中定义了一个委托: public bool delegate CutoffDateDelega 这个问题在这里已经有一个答案:> How to circumvent using an out parameter in an anonymous method block?2
我的代码中定义了一个委托:
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或匿名函数所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1236020.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-06
下一篇 2022-06-06

发表评论

登录后才能评论

评论列表(0条)

保存