Entwickler-Ecke
C# - Die Sprache - Hashtable
Nahasapee - Di 11.03.08 12:50
Titel: Hashtable
hi,
ich glaub, ich sehe den wald vor lauter bäumen nicht zur zeit ;)
mein porblem :
ich erzeuge nen HashTable
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12:
| tHashTable = new Hashtable(); tHashTable.Add("irgendeinKey", new String[2]{"irgendwas", "irgendwas2"}); ... später möchte ich drauf zu greifen das hatte ich mir so gedacht: ... foreach (object key in tHashTable.keys) { writeln(tHashTable[key][0]); writeln(tHashTable[key][1]); } ... |
da meckert allerdings der compiler rum:
| Zitat: |
Fehler 1 Indizierung mit [] kann nicht auf einen Ausdruck vom Typ "object" angewendet werden.
C:\Workspace_C#\ConsoleApplication1\ConsoleApplication1\WordXmlHandler.cs 74 42 ConsoleApplication1 |
was muss ich das objekt erst wieder casten in ein string[], wenn ja wie geht das ?;)
oder muss ich irgend was ganz anderes maceh?
lg christian
Moderiert von
Tino: C#- & Quote-Tags hinzugefügt
JüTho - Di 11.03.08 13:19
Titel: Re: Hashtable
Hallo Christian,
ein Blick in die
SDK-Doku und Übernahme der dortigen Beispiele erübrigt viele Fragen und Probleme.
Nahasapee hat folgendes geschrieben: |
was muss ich das objekt erst wieder casten in ein string[], wenn ja wie geht das ?;)
oder muss ich irgend was ganz anderes maceh? |
Wenn Du ein
object hast und als
string benutzen willst, musst Du IMMER eine Typverwandlung benutzen. (Teilweise macht NET das automatisch, aber nicht allgemein.)
Aber das Beispiel unter
Hashtable-Klasse zeigt, dass es auch einfacher geht:
C#-Quelltext
1: 2:
| foreach ( DictionaryEntry de in myHT ) Console.WriteLine("\t{0}: \t{1}", de.Key, de.Value); |
Außerdem hast Du mit
Dictionary<string, T> noch eine schöne Alternative.
Jürgen
Nahasapee - Di 11.03.08 13:27
Hi Jürgen,
dieses Beispiel aus derSDK hatte ich auch schon versucht
allerdings, wenn ich auf das
de.Value Objekt zugreifen will bekomme ich die gleiche Fehlermeldung
also
de.Value[0]
da ich ja ein new String[]{" "," "} rein gespeichert hatte
danke für die antwort
lg christian
Th69 - Di 11.03.08 13:31
Du kannst das Casten gleich in der foreach-Schleife vornehmen:
C#-Quelltext
1: 2: 3: 4: 5:
| foreach(string[] strings in tHashTable.Values) { writeln(strings[0]); writeln(strings[1]); } |
Ab .NET 2.0 würde ich aber die Generics (z.B. Dictionary<T, U>) benutzen, dann brauchst du nicht mehr explizit zu casten.
Nahasapee - Di 11.03.08 13:53
perfekt danke :)
lg
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!