1

我不确定如何问这个问题..希望我的解释能澄清:

我在一个类中有一个公共方法,比如说Widget它需要一个小部件列表并对它们进行更改。但是,有时,调用该方法的 Widget 在该列表中。有没有办法将当前对象设置为列表中的项目之一?

例如,这就是我想要做的:

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 回答
0

Me 引用了代码在其中运行且无法更改的类实例。(c# 中的 this)它不能像变量一样使用。

于 2009-08-26T22:01:05.337 回答
0

你想在更高的层次上做什么?

我的意思是,您为什么要尝试将当前对象“更改”为该列表中的对象之一?

如果您想更改其他人对您当前对象的引用,以便他们现在指向另一个对象,那么不,您不能这样做。

此外,您似乎已经在使用“我”这个对象,并试图将其分配给“我”。这样做的目的是什么?

于 2009-08-26T22:02:14.367 回答