vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
TOP-Angebot: 17 bzw. 24 Entwickler-Vollversionen zum unschlagbaren Preis!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2025
 
zurück

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

VB.NET - Ein- und Umsteiger
Re: Key in Dictionary ändern?! 
Autor: Manfred X
Datum: 04.03.11 08:24

Hallo!

Die Zuordnung Key->Value wird nach dem Erstellen nicht mehr geändert!

Du könntest eine zusätzliche Eigenschaft "Position" in die Klasse
aufnehmen und eine Vergleichsroutine für das Sortieren.
In dieser Routine kann auch das Vorhandensein und die Eindeutigkeit
der Positionsangabe geprüft werden.

Etwa so:
Public Class clsAufgabe
    Dim _Aufgabentyp As String, _Position As Integer
 
    Public Sub New(ByVal Aufgabentyp As String, _
        Optional ByVal Position As Integer = -1)
        _Aufgabentyp = Aufgabentyp : _Position = Position
    End Sub
 
    Public ReadOnly Property Aufgabentyp As String
        Get
            Return _Aufgabentyp
        End Get
    End Property
 
    Public Property Position As Integer
        Set(ByVal value As Integer)
            _Position = value
        End Set
        Get
            Return _Position
        End Get
    End Property
 
    Public Shared Function CompareAufgabenPosition _
         (ByVal a As clsAufgabe, ByVal b As clsAufgabe) As Integer
        If a.Position < 0 Or b.Position < 0 Then
            Throw New InvalidOperationException _
              ("Eine Aufgabenposition ist nicht definiert")
        End If
        If Not a.Equals(b) AndAlso a.Position = b.Position Then
            Throw New InvalidOperationException _
               ("Eine Aufgabenposition ist nicht eindeutig")
        End If
        Return a.Position.CompareTo(b.Position)
    End Function
End Class
Anwendung:
'Aufgabenliste erstellen
Dim positionsliste As New System.Collections.Generic.List(Of Integer)
Dim AufgabenAnzahl As Integer = 100
For i As Integer = 1 To AufgabenAnzahl : positionsliste.Add(i) : Next i
 
Dim rndm As New System.Random(12345)
For i As Integer = 1 To AufgabenAnzahl
    'Eindeutige, aber zufällige Positionsnummer abfragen
    Dim index As Integer = rndm.Next(0, positionsliste.Count)
    aufgabenliste.Add _
    (New clsAufgabe("Aufgabe " + CStr(i), positionsliste(index)))
    '... den verwendeten Index aus der Indexliste entfernen
    positionsliste.RemoveAt(index)
Next i
 
'Zwei Aufgabenpositionen tauschen
Dim pos1, pos2 As Integer
pos1 = 40 : pos2 = 60
Dim interpos = aufgabenliste(pos1).Position
aufgabenliste(pos1).Position = aufgabenliste(pos2).Position
aufgabenliste(pos2).Position = interpos
 
'Aufgabenliste anzeigen
DataGridView1.DataSource = aufgabenliste
 
'Aufgabenliste nach Position kontrolliert sortieren
Try
   aufgabenliste.Sort(AddressOf clsAufgabe.CompareAufgabenPosition)
Catch ex As Exception
   MsgBox(ex.Message)
End Try
 
'Sortier-Ergebnis überprüfen
For i As Integer = 1 To aufgabenliste.Count - 1
   If aufgabenliste(i - 1).Position > aufgabenliste(i).Position Then
      MsgBox("Sortierfehler!!")
   End If
Next i


Beitrag wurde zuletzt am 04.03.11 um 08:41:28 editiert.
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Key in Dictionary ändern?!3.401MikeJ03.03.11 15:18
Re: Key in Dictionary ändern?!2.473Manfred X03.03.11 17:12
Re: Key in Dictionary ändern?!2.133MikeJ03.03.11 20:01
Re: Key in Dictionary ändern?!2.518Manfred X04.03.11 08:24
Re: Key in Dictionary ändern?!2.037MikeJ04.03.11 21:01

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-2025 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