Мне нужна помощь в преобразовании анонимного метода ac # в vb.net - PullRequest
2 голосов
/ 12 марта 2011
provider.OptionsSet += delegate
{
  provider.FinishedLoading();
};

Ответы [ 3 ]

4 голосов
/ 12 марта 2011

Хорошая демонстрация того, как конвертеры делают это совершенно неправильно, они уже давно. Оператор + = не является синтаксисом VB.NET, для подписки на события требуется AddHandler. Откуда взялся Do - это чье-то предположение. Лямбда не может быть функцией, за исключением очень редких случаев, когда тип делегата возвращает значение. Три ошибки в одной строке, у вас нет шансов. Вам нужен VS2010, чтобы написать Sub lambda. Как это:

Module Module1
    Sub Main()
        Dim obj As New Test
        AddHandler obj.example, Sub(sender As Object, e As EventArgs)
                                    '' etc...
                                End Sub
    End Sub
End Module

Class Test
    Public Event example As EventHandler
End Class

Для более ранних версий вам понадобится небольшой неанонимный вспомогательный метод. Как это:

    AddHandler obj.example, AddressOf helper
...
Sub helper(ByVal sender As Object, ByVal e As EventArgs)
    '' etc..
End Sub

Человек 1, машина 0.

0 голосов
/ 12 марта 2011

У Пита Брауна также есть пример со встроенным сабвуфером:

http://10rem.net/blog/2010/04/16/tip-anonymous-event-handlers-in-vbnet

0 голосов
/ 12 марта 2011
provider.OptionsSet += Function() Do
    provider.FinishedLoading() 
End Function 

Это взято из http://www.developerfusion.com/tools/convert/csharp-to-vb/,, поэтому я не проверял его. Это может быть более полезным, если вы смогли предоставить больше контекста Для чего это используется?

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