1

その質問をする方法が本当にわかりません..うまくいけば、私の説明が明確になります:

クラスに public メソッドがあります。たとえばWidget、ウィジェットのリストを取得して変更します。ただし、メソッドを呼び出すウィジェットがそのリストに含まれている場合があります。現在のオブジェクトをリスト内の項目の 1 つとして設定する方法はありますか?

たとえば、これが私がやろうとしていることです:

Public Class Widget()
    '...other stuff'
    Public Sub Update()
        'do some stuff...'
        For Each w As Widget In List(Of Widget)
           'update widgets'
           If w.ID = ID Then
              Me = w '<----- here is what I am trying to do, but it wont let me'
           End If
        Next
    End Sub
End Class
4

4 に答える 4

3

いいえ。ただし、参照元(親)オブジェクトがリッスンするイベントをオブジェクトに発生させ、オブジェクトを適切に置き換えることができます。

Public Class Widget
    Public Event Replace As ReplaceReferenceEventHandler

    Public Sub Update()
        'do stuff
        For Each w As Widget In List(Of Widget)
           'update widgets'
           If w.ID = ID Then
              Replace(Me, w)
           End If
        Next
    End Sub
End Class

Public Delegate Sub ReplaceReferenceEventHandler(ByVal sender As Object, ByVal replaceWith As Object)
于 2009-08-26T22:03:35.453 に答える
1

使用するオブジェクトを返し、呼び出しサイトで参照を設定するだけです。

Public Class Widget()
    '...other stuff'
    Public Function Update() As Widget
        'do some stuff...'
        return SelectedWidget
    End Sub
End Class

myWidget = myWidget.Update()
于 2009-08-26T22:34:17.437 に答える