Existuje nějaký způsob, jak nastavit instanci objektu na aktuální instance objektu v rámci své vlastní třídy?

hlasů
1

Nejsem si jistý, opravdu, jak se zeptat na tuto otázku .. doufejme, že moje vysvětlení objasní:

Mám veřejná metoda ve třídě, řekněme Widget, že vezme seznam widgetů a provede změny k nim. Nicméně někdy je Widget volání metody je v tomto seznamu. Existuje nějaký způsob, jak nastavit aktuální objekt jako jednu z položek v seznamu?

Například, tady je to, co se snažím dělat:

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
Položena 26/08/2009 v 22:56
zdroj uživatelem
V jiných jazycích...                            


4 odpovědí

hlasů
3

No, ale to, co můžete udělat, je mít váš objekt oheň událost kterém (mateřská) objekt odkazování naslouchá, a nahrazuje objekt správně.

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)
Odpovězeno 26/08/2009 v 23:03
zdroj uživatelem

hlasů
1

Jen vrátit objekt, který chcete použít, a nastavte odkaz na místě volání.

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

myWidget = myWidget.Update()
Odpovězeno 26/08/2009 v 23:34
zdroj uživatelem

hlasů
0

Co se snažíte dělat, na vyšší úrovni?

Myslím, proč se snažíte „change“ aktuální objekt do jednoho z objektů v tomto seznamu?

Chcete-li změnit odkazy, které jiní lidé mají k aktuální objekt, takže se nyní poukazují na jiný objekt, pak ne, můžete to udělat.

Také se zdá, že jste při objektu, který je „mi“ už, a snaží se ji přiřadit „Me“. Jaký je účel to?

Odpovězeno 26/08/2009 v 23:02
zdroj uživatelem

hlasů
0

Me odkazuje na instanci třídy, ve kterém kód spustí a nemůže být změněn. (To v jazyce C #) To nemůže být použita jako proměnná.

Odpovězeno 26/08/2009 v 23:01
zdroj uživatelem

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more