Конвертировать делегат из C # в VB - PullRequest
0 голосов
/ 28 октября 2011

как я могу преобразовать следующий код из C # в VB, не выставляя «переменную» как глобальную переменную.

private void SomeMethod(SomeType variable)
{
    this.SomeEvent+= delegate
    {
        if (variable == 1)
        {
           this.DoSomething();
        }
    }
    //here I have some other code
}

Ответы [ 2 ]

4 голосов
/ 28 октября 2011

Одно возможное решение

Private Sub SomeMethod(ByVal variable As Integer)
    AddHandler Me.SomeEvent,
        Sub()
            If (variable = 1) Then
                Me.DoSomething()
            End If
        End Sub
    Console.WriteLine("ciao")
End Sub

Я только что попробовал это, и это работает как шарм, так что я не знаю, почему ты так говоришь :( Visual studio 2010.

также можно сделать что-то подобноев VS2008 попробуйте второе решение, первое, кажется, работает только в 2010 году.

Если это не сработает, вы можете попробовать это, больше кода для записи:

Public Delegate Sub MyDelegate()

Public Class Class1

    Public Event SomeEvent As MyDelegate

    Private Class MyDelegateClass

        Public Owner As Class1
        Public Variable As Integer

        Public Sub Method()
            If (Variable = 1) Then
                Owner.DoSomething()
            End If
        End Sub

    End Class

    Private Sub SomeMethod(ByVal variable As Integer)

        Dim dc As New MyDelegateClass
        dc.Owner = Me
        dc.Variable = variable

        AddHandler Me.SomeEvent, AddressOf dc.Method
        Console.WriteLine("ciao")
    End Sub

    Public Sub DoSomething()
        Console.WriteLine("hello")
    End Sub

End Class

VisualСтудия синтаксического сахара делает что-то подобное с анонимным делегатом.

0 голосов
/ 28 октября 2011

Google указал мне на этот веб-сайт , на котором написано, что они бесплатны.

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