J'ai besoin de définir une classe avec un objet de collection interne pour contenir différents types de valeurs (telles que string, int, float, DateTime et bool) par une clé de chaîne. Je pourrais utiliser Hashtable car ce n'est pas une classe de collection fortement typée, alors que le Dictionary est utilisé pour les items fortement typés (je pourrais utiliser object pour Dictionary même si).Quelle classe de collection utiliser: Hashtable ou Dictionary?
est ici le cas, je voudrais définir ma classe et son utilisation:
public class MyBaseClass<D> {
protected Hashtable ht = new Hashtable();
MyClass public SetValue<T>(string key, T value)
{
ht.Add(key, value);
return this;
}
public abstract D GetObject();
}
// Example of using the base class for data as class Data1
public MyClass<Data1> : MyBaseClass<Data1> {
public Data1 GetObject() {
return new Data1 {
Property1 = ht["key1"] as string,
Property2 = Int.Parse(ht["key2"].ToString())
}
}
l'exemple ci-dessus, je ne suis pas sûr quelle est la meilleure collection de tenir mes données MyBaseClass? J'ai lu quelques articles sur Hashtable. C'est une collection obsolète et la performance comparée à la collection Dictionary est beaucoup plus lente. Dois-je utiliser Dictionary ou toute autre collection disponible dans .Net 3.5?
Le dictionnaire est un HashTable optimisé. Je pense que cela répond à votre question :) –