vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
sevAniGif - als kostenlose Vollversion auf unserer vb@rchiv CD Vol.5  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB.NET - Fortgeschrittene
Zeiger in VB.NET oder Zeigerlos von ArrayList nach Sortedlist kopieren 
Autor: David M
Datum: 11.08.05 12:36

Servus an alle!

Ich hab ein etwas komisches Phänomen entdeckt.
Eigentlich dürfte es in VB.NET ja gar keine Zeiger geben.
Durch Zufall hab ich es leider geschafft, eine derartige Abhängigkeit
zu schaffen, obwohl ich es gar nicht will.

Als Beispiel verwende ich wieder meine Standard-Klasse "Schiff", die ganz am
Schluß zu finden ist.
Mit dem folgenden Code fülle ich eine ArrayList sowie eine SortedList mit
den Instanzen von drei Schiffen. Soweit so gut. Bei der ersten Ausgabe sind
die Baujahr-Informationen natürlich gleich, doch wenn ich danach eine
Instanz innerhalb einer Liste ändere, dann ändert das auch den Wert
der anderen!!
Das sollte eigentlich nicht so sein ...

        Dim s1 As New Schiff("Adler von Lübeck", "Lübeck", 1565)
        Dim s2 As New Schiff("Albatros", "Rostock", 1864)
        Dim s3 As New Schiff("Ubena von Bremen", "Bremen", 1380)
 
        Dim SL As New SortedList
        SL.Add(s1.Name, s1)
        SL.Add(s2.Name, s2)
        SL.Add(s3.Name, s3)
 
        Dim AL As New ArrayList
        AL.Add(SL.GetByIndex(0))
        AL.Add(SL.GetByIndex(1))
        AL.Add(SL.GetByIndex(2))
 
        MsgBox(AL.Item(0).Baujahr & " " & SL.Item(AL.Item(0).Name).Baujahr)
        AL.Item(0).Baujahr = 1570
        MsgBox(AL.Item(0).Baujahr & " " & SL.Item(AL.Item(0).Name).Baujahr)
Hat jemand eine Ahnung, wieso dieser Effekt auftritt?

Hier die Beispielklasse:
<Serializable()> Public Class Schiff
    Public Name As String
    Public Heimathafen As String
    Public Baujahr As Integer
    Public Sub New(ByVal Name As String, ByVal Heimathafen As String, ByVal _
      Baujahr As Integer)
        Me.Name = Name
        Me.Heimathafen = Heimathafen
        Me.Baujahr = Baujahr
    End Sub
    Public Sub New()
    End Sub
End Class
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Zeiger in VB.NET oder Zeigerlos von ArrayList nach Sortedlis...968David M11.08.05 12:36
Re: Zeiger in VB.NET oder Zeigerlos von ArrayList nach Sorte...561ModeratorDaveS11.08.05 13:02
Re: Zeiger in VB.NET oder Zeigerlos von ArrayList nach Sorte...534David M16.08.05 16:11
Re: Zeiger in VB.NET oder Zeigerlos von ArrayList nach Sorte...633ModeratorDaveS16.08.05 16:45

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2024 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel