Frage

Ich habe ein ConcurrentDictionary Objekt, dass ich Satz auf ein Dictionary-Objekt möchte.

Gießen zwischen ihnen ist nicht erlaubt. So wie ich es tun?

War es hilfreich?

Lösung

Die ConcurrentDictionary<K,V> Klasse implementiert die IDictionary<K,V> -Schnittstelle, die für die meisten Anforderungen genügen sollte. Aber wenn Sie wirklich brauchen ein konkretes Dictionary<K,V> ...

var newDictionary = yourConcurrentDictionary.ToDictionary(kvp => kvp.Key,
                                                          kvp => kvp.Value,
                                                          yourConcurrentDictionary.Comparer);

// or...
// substitute your actual key and value types in place of TKey and TValue
var newDictionary = new Dictionary<TKey, TValue>(yourConcurrentDictionary, yourConcurrentDictionary.Comparer);

Andere Tipps

Warum brauchen Sie es in ein Wörterbuch zu konvertieren? ConcurrentDictionary<K, V> implementiert die IDictionary<K, V> Schnittstelle, ist das nicht genug?

Wenn Sie wirklich ein Dictionary<K, V> benötigen, können Sie Kopieren es mit LINQ:

var myDictionary = myConcurrentDictionary.ToDictionary(entry => entry.Key,
                                                       entry => entry.Value);

Beachten Sie, dass dies macht eine Kopieren . Sie nicht zuweisen nur ConcurrentDictionary zu einem Wörterbuch, da ConcurrentDictionary kein Subtyp von Wörterbuch ist. Das ist der ganze Sinn von Schnittstellen wie IDictionary. Sie abstrahieren kann die gewünschte Schnittstelle ( „eine Art Wörterbuch“) von der konkreten Umsetzung (concurrent / nicht-konkurrierende hashmap)

ich glaube, ich einen Weg gefunden haben, es zu tun.

ConcurrentDictionary<int, int> concDict= new ConcurrentDictionary<int, int>( );
Dictionary dict= new Dictionary<int, int>( concDict);
ConcurrentDictionary<int, string> cd = new ConcurrentDictionary<int, string>();
Dictionary<int,string> d = cd.ToDictionary(pair => pair.Key, pair => pair.Value);
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top