gpt4 book ai didi

vb.net - 如何为ForEach传递带有lambda表达式的System.Action参数?

转载 作者:行者123 更新时间:2023-12-02 11:00:48 26 4
gpt4 key购买 nike

当尝试使用lambda表达式而不是AddressOf运算符,并为ForEach sub设置参数时,出现以下错误:

Statement lambdas cannot be converted to expressions trees



这是 AddressOf代码,它可以工作:
lista.ForEach(new Action(Of String)(AddressOf Console.WriteLine))

这是产生错误的lambda代码:
lista.ForEach(new Action(Of String)(Function(x) x = "teste")

方法 ForEach被调用,因此 Action需要作为参数传递。

谁能帮助我,或告诉我是否可能?

最佳答案

最终,您的问题是这样的:

lista.ForEach(new Action(Of String)(Function(x) x = "teste")
ForEach是一种方法,由于该操作而不会返回任何值。

更改为:
lista.ForEach(new Action(Of String)(Sub(x) x = "teste"))

尽管我一点都不喜欢该方法签名,但是您使此操作复杂化了。

考虑到ForEach方法( MSDN)接受 Action<T>,因此无需声明 new Action(of String)。您需要关注的是您希望传递的Lambda Express,以便对每个元素执行列表/数组

良好的阅读,了解 VB's Lambda Expression Implementation的基础知识

这样,请尝试以下模式:
lista.ForEach(Sub(x) x = "teste")

要么
lista.ForEach(Function(x) x = "teste")

关于vb.net - 如何为ForEach传递带有lambda表达式的System.Action参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41747122/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com