Zeiger in VB?

06/12/2007 - 08:40 von Werner Strewe | Report spam
Guten Morgen,
ich habe eine Klasse cKL1 mit den Props a, b, und c, sowie eine zweite
Klasse cKL2 mit den Props b, c, und d.
Jetzt will ich beide so mit Werten belegen, daß beim Ändern der cKL2.b (und
c) sich auch die Props in cKL1 àndern. Also an sich braucht die Klasse cKL2
keine eigenen Werte, sie soll dort nur Zeiger auf die entsprechenden Vars in
cKL1 haben (ich glaube in c++ geht das).

Wie kann man das in VB erreichen?
Falls nicht, Kann man dann einen Ausweg über C# oder APIs benutzen?

ich danke euch
gruß von werner
 

Lesen sie die antworten

#1 Peter Fleischer
06/12/2007 - 09:00 | Warnen spam
"Werner Strewe" schrieb im Newsbeitrag
news:%
Guten Morgen,
ich habe eine Klasse cKL1 mit den Props a, b, und c, sowie eine zweite
Klasse cKL2 mit den Props b, c, und d.
Jetzt will ich beide so mit Werten belegen, daß beim Ändern der cKL2.b
(und c) sich auch die Props in cKL1 àndern. Also an sich braucht die
Klasse cKL2 keine eigenen Werte, sie soll dort nur Zeiger auf die
entsprechenden Vars in cKL1 haben (ich glaube in c++ geht das).

Wie kann man das in VB erreichen?



Hi Werner,
das geht problemlos. Vorher sollte aber geklàrt werden, wie du das genau
verstehst, denn eine Klasse ist nur der "Bauplan". Die konkreten Werte
werden in den Objektinstanzen gespeichert. Und da gibt es statische (Shared)
und nicht statische Objekte. Bei nicht statischen Objekten müssen sich die
Objekte kennen, d.h. es müssen die Verweise (Bezüge) übergeben werden, z.B.
so (Konsolenprojekt):

Module Module1

<STAThread()> _
Sub Main()

Dim c1 As New cKL1
Dim c2 As New cKL2(c1)
With c1
.a = 22
.b = 33
.c = 44
End With
With c2
.b = 55
.c = 66
.d = 77
End With
Console.WriteLine(String.Format("{0} {1} {2}", c1.a, c1.b, c1.c))
Console.WriteLine(String.Format("{0} {1} {2}", c2.b, c2.c, c2.d))
Console.ReadLine()

End Sub

End Module

Public Class cKL1

Private _a As Integer
Public Property a() As Integer
Get
Return _a
End Get
Set(ByVal value As Integer)
_a = value
End Set
End Property

Private _b As Integer
Public Property b() As Integer
Get
Return _b
End Get
Set(ByVal value As Integer)
_b = value
End Set
End Property

Private _c As Integer
Public Property c() As Integer
Get
Return _c
End Get
Set(ByVal value As Integer)
_c = value
End Set
End Property

End Class

Public Class cKL2

Dim _cl1 As cKL1
Public Sub New(ByVal c As cKL1)
_cl1 = c
End Sub

Public Property b() As Integer
Get
Return _cl1.b
End Get
Set(ByVal value As Integer)
_cl1.b = value
End Set
End Property

Public Property c() As Integer
Get
Return _cl1.c
End Get
Set(ByVal value As Integer)
_cl1.c = value
End Set
End Property

Private _d As Integer
Public Property d() As Integer
Get
Return _d
End Get
Set(ByVal value As Integer)
_d = value
End Set
End Property

End Class


Viele Gruesse

Peter

Ähnliche fragen