Widzę wiele pytań/odpowiedzi na temat konwersji Hashtable na Dictionary, ale jak mogę przekonwertować słownik na Hashtable?Jak przekonwertować słownik <> do Hashtable w C#?
Odpowiedz
Najprostszym sposobem jest użycie konstruktora Hashtable:
var dictionary = new Dictionary<object, object>();
//... fill the dictionary
var hashtable = new Hashtable(dictionary);
wydaje się dość rzadko zdarza się chce zrobić, ale w najprostszym:
var hash = new Hashtable();
foreach(var pair in dictionary) {
hash.Add(pair.Key,pair.Value);
}
(zakładając brak niezwykłych „narzędzi wpisane sprawdzić równość ale nie bez typu równość sprawdzić” etc)
Teraz wystarczy uwzględnić to w rozszerzeniu 'ToHashTable' i voila! – Dismissile
Istnieje nawet [konstruktor] (http://msdn.microsoft.com/en-us/library/kdkta2sx.aspx), który robi to samo. – Joey
Oto, o czym myślałem. Zastanawiał się, czy nie było tak oczywistego sposobu na zrobienie tego. Jednak dziękuję! – jpints14
Dictionary<int, string> dictionary = new Dictionary<int, string>
{
{1,"One"},
{2,"Two"}
};
Hashtable hashtable = new Hashtable(dictionary);
Wypróbuj
Można rozważyć użycie przeciążenie Hashtable
konstruktora, która pobiera parametr IEqualityComparer
:
var hashtable = new Hashtable(dictionary, (IEqualityComparer) dictionary.Comparer);
W ten sposób Twój Hashtable używa tego samego Comparer
jako słownika. Na przykład, jeśli w słowniku używany jest ciąg znaków niewrażliwy na wielkość liter, można również ustawić opcję rozróżniania małych i małych liter w rozmiarze Hashtable
. Np .:
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
- 1. Jak mogę przekonwertować listę <object> na Hashtable w C#?
- 2. Różnica między Słownik i Hashtable
- 3. Jak przekonwertować Dictionary <string, object> do Dictionary <string, string> w C#
- 4. Jak przekonwertować słownik do tablicy
- 5. Słownik Javy <String, List <Object>>
- 6. Słownik vs użycie pamięci Hashtable
- 7. Jak przekonwertować IEnumerable <Task<T>> do IObservable <T>
- 8. SkipList <T> vs Słownik <TKey,TValue>
- 9. Jak przekonwertować IEnumerable <T> na listę <T> w języku C#?
- 10. Jak przekonwertować listę <char> na listę <string> w języku C#?
- 11. Jak serializować/dekantalizować słownik <ciąg, obiekt> do XML
- 12. Konwertuj słownik <String,Int> na słownik <String, SomeEnum> używając LINQ?
- 13. C# LINQ - nie można niejawnie przekonwertować IEnumerable <string> do listy <string>
- 14. convert <vector><string> TO <vector><int> C++, Win32
- 15. C# Nie można przekonwertować z IEnumerable <Base> do IEnumerable <Derived>
- 16. Jak konwertować Lista <string> do ReadOnlyCollection <string> w C#
- 17. Słownik <ciąg, MyObject> lub lista <MyObject> z C# 3.5?
- 18. Jak przekonwertować Func <T,bool> ekspresji <Func<T,bool>>
- 19. Konwertuj słownik na listę <KeyValuePair>
- 20. Jak przekonwertować ciąg do pliku xml w java
- 21. Jak przekonwertować std :: string do v8 Local <string>
- 22. Jak przekonwertować SortedList na SortedList <>
- 23. Jak przekonwertować wyrażenie <Func <T, bool>> na predykat <T>
- 24. Jak przekonwertować IQueryable <T> na wyrażenie <Func <T, bool>>?
- 25. Jak korzystać z listy <T> lub Słownik <T,T2> w komponencie C# WinRT
- 26. Konwertuj wyodrębniony ciąg na słownik <ciąg, ciąg> w C#
- 27. Jak przekonwertować wyrażenie Lambda do wpisanego wyrażenia <Func<T, T>>
- 28. Konwertuj słownik <MyType>. Kolekcja wartości do IList <MyType>
- 29. Jak przekonwertować IEnumerable <int> do Int32
- 30. jak przekonwertować ListItemCollection (dropdownlist.items) do słownika <ciąg, ciąg>?
A dlaczego miałbyś tego potrzebować? Hashtable jest bardzo specyficzny, ponieważ wartość obliczona na kluczu tworzy położenie wartości ... a słownik jest po prostu kolekcją prostą (klucz, wartość). Dlaczego chcesz przekonwertować słownik na tablicę? –
Na najprostszym poziomie jestem leniwy. Obiekt typu 'Hashtable' jest używany w wielu miejscach. – jpints14
To samo w sobie nie jest powodem, aby z niego korzystać. Słowniki i Hashtables to różne bestie, które są używane w różnych okolicznościach. Wiesz, lista jest również używana w wielu miejscach ... Dlaczego więc jej nie użyć? : -s –