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: Generische Basisklasse gesucht 
Autor: ModeratorRalfE (Moderator)
Datum: 26.08.10 22:08

Wenn du so eine Collection baust, dann würde ich für die Datenhaltung eine List(Of T) nehmen. Damit wäre der indexbasierende Zugriff abgedeckt.
Für den schlüsselbasierenden Zugriff, würde ich ein Dictionary definieren, was den Indexwert zu einem Schlüssel speichert. In Code sieht dies dann so aus:

Public Class Collection(Of TKey, TValue)
	Private data As List(Of TValue)
	Private keyMapping As Dictionary(Of TKey, Integer)
 
	Public Sub New()
		data = New List(Of TValue)
		keyMapping = New Dictionary(Of TKey, Integer)
	End Sub
 
	Public Sub Add(ByVal item As TValue)
		data.Add(item)
	End Sub
 
	Public Sub Add(ByVal key As TKey, ByVal item As TValue)
		data.Add(item)
		Dim itemIndex As Integer = data.Count - 1
		keyMapping.Add(key, itemIndex)
	End Sub
 
	Default Public Property Item(ByVal index As Integer) As TValue
		Get
			Return data(index)
		End Get
		Set(ByVal value As TValue)
			data(index) = value
		End Set
	End Property
 
	Default Public Property Item(ByVal key As TKey) As TValue
		Get
			Dim itemIndex = keyMapping(key)
			Return data(itemIndex)
		End Get
		Set(ByVal value As TValue)
			Dim itemIndex = keyMapping(key)
			data(itemIndex) = value
		End Set
	End Property
End Class
 
Module Module1
 
	Sub Main()
		Dim testCollection As New Collection(Of String, Integer)
 
		testCollection.Add(1)
		testCollection.Add("Hans", 42)
 
		Console.WriteLine(testCollection.Item("Hans"))
		Console.WriteLine(testCollection(0))
 
		testCollection("Hans") = 11
 
		Console.WriteLine(testCollection(1))
		Console.WriteLine(testCollection("Hans"))
		Console.ReadLine()
	End Sub
 
End Module
Entsprechende Ausimplementierung, IEnumerable noch deklarieren und die Listenimplementierung zurückgeben, Remove-Methoden etc. wäre noch zu machen. Aber dies wären die wesentlichen Eckpunkte.

Ralf

alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Generische Basisklasse gesucht1.929Schü26.08.10 12:08
Re: Generische Basisklasse gesucht1.238ModeratorRalfE26.08.10 14:27
Re: Generische Basisklasse gesucht1.213ModeratorDaveS26.08.10 16:05
Re: Generische Basisklasse gesucht1.207ModeratorRalfE26.08.10 21:51
Re: Generische Basisklasse gesucht1.209Schü26.08.10 14:51
Re: Generische Basisklasse gesucht1.176ModeratorRalfE26.08.10 22:08
Re: Generische Basisklasse gesucht1.190Drapondur27.08.10 00:30
Re: Generische Basisklasse gesucht1.242ModeratorDaveS27.08.10 11:23
Re: Generische Basisklasse gesucht1.296Schü27.08.10 19:04

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