Ich sehe viele Fragen/Antworten darüber, wie man eine Hashtable in ein Dictionary konvertiert, aber wie kann ich ein Dictionary in eine Hashtable konvertieren?Wie Dictionary <> zu Hashtable in C# konvertieren?
Antwort
der einfachste Weg ist mit Konstruktor von Hashtable:
var dictionary = new Dictionary<object, object>();
//... fill the dictionary
var hashtable = new Hashtable(dictionary);
ziemlich selten scheint, tun zu wollen, aber am einfachsten:
var hash = new Hashtable();
foreach(var pair in dictionary) {
hash.Add(pair.Key,pair.Value);
}
(sofern keine ungewöhnlichen „Geräte getippt Gleichheitsprüfung aber nicht untypisierten Gleichheit prüfen“ usw.)
Jetzt nur dies in eine 'ToHashTable' Erweiterungs-Methode und voila! – Dismissile
Es gibt sogar einen [Konstruktor] (http://msdn.microsoft.com/en-us/library/kdkta2sx.aspx), der dasselbe tut. – Joey
Das habe ich mir vorgenommen. Ich fragte mich, ob es einen nicht so offensichtlichen Weg dafür gab. Aber danke! – jpints14
Dictionary<int, string> dictionary = new Dictionary<int, string>
{
{1,"One"},
{2,"Two"}
};
Hashtable hashtable = new Hashtable(dictionary);
Versuchen Sie, diese
Sie könnten mit der Hashtable
Konstruktor Überlastung zu prüfen, die ein IEqualityComparer
Parameter übernehmen:
var hashtable = new Hashtable(dictionary, (IEqualityComparer) dictionary.Comparer);
Auf diese Weise Ihre Hashtable verwenden die gleichen Comparer
wie das Wörterbuch. Wenn Ihr Wörterbuch zum Beispiel einen Zeichenschlüssel ohne Berücksichtigung der Groß-/Kleinschreibung verwendet, möchten Sie möglicherweise auch, dass Ihre Hashtable
nicht zwischen Groß- und Kleinschreibung unterscheidet. Zum Beispiel:
var d = new Dictionary<string, string>(StringComparer.OrdinalIgnoreCase);
d.Add("a", "a");
d.Add("b", "b");
bool found;
found = d.ContainsKey("A"); // true
var hashtable1 = new Hashtable(d);
var hashtable2 = new Hashtable(d, (IEqualityComparer) d.Comparer);
found = hashtable1["A"] != null; // false - by default it's case-sensitive
found = hashtable2["A"] != null; // true - uses same comparer as the original dictionary
Und warum würden Sie das brauchen? Eine Hashtabelle ist insofern sehr spezifisch, als ein Wert, der für den Schlüssel berechnet wird, die Position des Wertes erzeugt ... und ein Wörterbuch nur eine gerade Sammlung (Schlüssel, Wert) ist. Warum möchten Sie ein Wörterbuch in eine Hashtabelle konvertieren? –
Auf der einfachsten Ebene bin ich faul. Das Objekt vom Typ "Hashtable" wird an vielen Stellen verwendet. – jpints14
Das ist an sich kein Grund, es zu benutzen. Wörterbücher und Hashtables sind verschiedene Biester, die unter verschiedenen Umständen verwendet werden. Sie wissen, eine Liste wird auch an vielen Orten verwendet ... Also warum nicht das verwenden? : -s –