vb.net - lambda 表达式中的子声明不起作用
问题描述
我尝试从http://www.informit.com/articles/article.aspx?p=2429291&seqNum=8运行以下示例
Private progress As Progress(Of Integer)
Private counter As Integer = 0
Sub Main()
Try
progress = New Progress(Of Integer)
AddHandler progress.ProgressChanged, Sub(sender, e)
Console.
WriteLine _
("Download progress: " & _
CStr(e))
End Sub
DownloadAllFeedsAsync(progress)
Catch ex As Exception
Console.WriteLine(ex.Message)
Finally
Console.ReadLine()
End Try
End Sub
我的问题是,编译器不接受以下行:
AddHandler progress.ProgressChanged, Sub(sender, e)
Console.WriteLine("Download progress: " & CStr(e))
End Sub
sender
和似乎有问题e
。
错误消息如下:
Lambda 参数“发送者”隐藏了一个包含块中的变量。
有人知道这个问题吗?
解决方案
正如我在对问题的评论中提到的那样:我已经检查了 VS: 2012 和 2017 上的相关代码,并且编译时没有错误。
至于您的错误消息,请检查以下内容:Lambda parameter '' hides a variable in an enclosure block、先前定义的范围变量或查询表达式中隐式声明的变量
最重要的是:
纠正这个错误
Ensure that all variables in your lambda expression have unique names that do not duplicate existing variable names in the same scope.
根据您的评论:
在链接的示例中,只有一个
Sub Main()
,而在我的示例中,我有Form1_Load(Sender As Object, e as Eventargs)
。
因此,变量:sender
和e
存在于同一范围内。现在,您知道如何解决您的问题了 ;)
推荐阅读
- java - 具有不支持线程的函数的 Java ExecutorService 线程
- c# - 在 C# 中,`new List 的结果容量是什么
() {3,5};`? - javascript - Vuetify - 如何使用 setTimeout 函数更改 v-img 源
- javascript - 使用 npx create-react-app newapp 命令,但在一段时间后它显示 57 个包正在寻找资金
- python - 错误:命令出错,退出状态为 1
- angular - API POST 请求:空值与空值与已删除值
- r - 使用 envfit (vegan) 计算物种分数
- java - 访问其他 Java 类
- python - Python pandas pivot_table 类别列位置
- visual-studio - 在调试器中断时将 VS Code 置于前台