我尝试从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参数“发送器”将变量隐藏在一个“包围区”中。
有人知道这个问题吗?
答案 0 :(得分:0)
正如我在对该问题的评论中提到的那样:我已经在VS:2012和2017上检查了相关代码,并且正在编译而没有错误。
关于您的错误消息,请检查以下内容:Lambda parameter '' hides a variable in an enclosing block, a previously defined range variable, or an implicitly declared variable in a query expression
最重要的是:
更正此错误
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
存在于同一作用域中。现在,您知道该如何解决您的问题了;)