Под объявлением в лямбда-выражении не работает - PullRequest
0 голосов
/ 28 февраля 2019

Я попытался запустить следующий пример из 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.

Сообщение об ошибке следующее:

Лямбда-параметр "отправитель" скрывает переменную в охватывающем блоке ".

Кто-нибудь знает эту проблему?

1 Ответ

0 голосов
/ 28 февраля 2019

Как я уже упоминал в своем комментарии к вопросу: я проверил связанный код на VS: 2012 и 2017, и он компилируется без ошибок.

Что касается вашего сообщения об ошибке, проверьте это: Лямбда-параметр '' скрывает переменную во включающем блоке, ранее определенную переменную диапазона или неявно объявленную переменную в выражении запроса

Самое важное:

Чтобы исправить эту ошибку

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 существуют в одной и той же области видимости.Теперь вы знаете, что делать, чтобы решить вашу проблему;)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...