gpt4 book ai didi

Vb.Net Action 委托(delegate)问题?

转载 作者:行者123 更新时间:2023-12-03 00:33:48 25 4
gpt4 key购买 nike

我是 vb.net 新手。这个问题可能很新手,之前已经回答过,但我找不到。我正在尝试 lambda 功能并在这里受到了打击。

 Private Function HigerOrderTest(highFunction as Func(Of Int16,Int16)) As Action(of String)
Dim sam = highFunction(3)
Dim DoIt as Action(of String)
DoIt = sub(s) console.WriteLine(s)
return DoIt
End Function

我在 DoIt = sub(s) console.WriteLine(s) 行得到了“预期表达式。”。当我将其更改为 DoIt = function(s) console.WriteLine(s) 时,我得到了 Expression does not generated a value. 错误。有什么问题吗?

最佳答案

如果您使用的是 Visual Studio 2008 (VB.NET 9),VB.NET 中存在一个限制,要求 lambda 表达式返回一个值,因此您不能使用 Sub。这在 VB.NET 10 中发生了变化,因此在该环境中您的代码应该按预期工作。

问题在于,一方面您需要将 lambda 表达式设为 Function,而不是 Sub,而另一方面 Console.WriteLine 没有返回值。解决方案是将其包装到一个调用 Console.WriteLine 并返回一个值的函数中:

Private Function ConsoleWriteLine(ByVal text As String) As String
Console.WriteLine(text)
Return text
End Function

然后您可以在 lambda 表达式中使用该函数:

Dim DoIt As Action(Of String)
DoIt = Function(s) ConsoleWriteLine(s)

关于Vb.Net Action 委托(delegate)问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2786753/

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