Anderes String Array

Railer

Mitglied
Hi!

Wie kann ich in VB.NET ein String Array kreiren (das moderne Wort ;-)) mit dem ich auf die einzelnen Felder nicht über Index zugreifen kann, sondern über den Namen dieses Feldes?

als Beispiel etwa so:

MeinArray("FeldNr1") = "Inhalt des Feldes"
MeinArray("FeldNr2") = "Inhalt des Feldes2"

so ähnlich.
 
Hi Railer,

das realisierst du über eine HashTable.
Hier wird ein Datenobjekt zusammen mit einem Schlüsselobjekt gespeichert.

Bsp :
-----------------------------------------
Sub hashtable_bsp

Dim ht as New hashtable()
Dim myEntry as DictionaryEntry

ht.Add("eins",1)
ht.Add("zwei, "derGanzeSchmontz")
' ...

Console.WriteLine("Element ht(""zwei""): " + ht("zwei").ToString)

End Sub

--------------------------------

Die beiden Eigenschaften für jeden Eintrag sind
myEntry.Value
myEntry.Key

Die kannst du ja dann mit einer For EACH Schleife auslesen

Gruesse
Chris
 
Vielen Dank!

Aber gibt es vielleicht auch etwas, wo ich direkt auf ein "Datensatz" zugreifen kann um den Wert zu verändern, ohne dass ich eine Schleife laufen lassen muss um das Key zu finden?
 
Zuletzt bearbeitet:
Wieso denn in einer Schleife?
Code:
Dim table as new Hashtable()
table("Key1") = 55
table(77) = "Hallo Welt"
WriteLine(cint(table("Key1")) & " oder " & cstr(table.item(77)))
Hashtabellen arbeiten mit dem Datentyp Object. Du muss also jedesmal eine explizite Typkonvertierung vornehmen.

Wenn du aber nur mit Strings arbeiten willst stellt das .NET Framework eine Klasse im Namespace Collections.Specialized bereit, die nur Strings als Key und Wert akzeptiert.

Wenn du mit dem neuen .NET Framework 2.0 (zur Zeit Beta) arbeitest, kannst du auch die neuen Generics benutzen.

Code:
Dim table as new Collections.Generic.Dictionary(of String, String)
table("einKey")="einWert"
WriteLine(table("einKey"))
Allerdings sind Generics nicht Teil Common Language Runtime, was bedeutet, dass du sie nur intern (nie Public, Protected oder Friend) verwenden darfst, da Programmierer in anderen .NET Sprachen deine Klassenbibliotheken dann nicht benutzen können.

Bei reinen Formularanwendungen ist das natürlich egal...
 
Oh man, stimmt, tut mir leid.

Hab losgepostet ohne die Sache richtig anzusehen. Na ja, das passiert oft, wenn man unter Zeitdruck steht.

StringCollection ist aber anscheinend nur eine Liste von Strings, also quasi ein Arra. Damit kann ich keine Schlüssel/Wert - Paare darstellen, stimmt's?

Vielen Dank!


EDIT: Hab gerade gesehen es gibt ne Klasse "StringDictionary", mit der kann man, so wie es aussieht, auch Slüssel/Wert-Paare darstellen.
 
Zuletzt bearbeitet:
Zurück