À l'aide de HashSet en C# 2.0, compatible avec 3.5
Je veux vraiment utiliser hashsets dans mon programme. À l'aide d'un dictionnaire se sent moche. Je vais probablement commencer à l'utiliser avec VS2008 .Net 3.5 quelques jours, donc mon idéal serait que, même si je ne peux pas (ou puis-je?) utilisation hashsets dans VS2005, quand j'ai commencer à l'utiliser .NET 3.5, je ne veux pas avoir à changer grand-chose, si quoi que ce soit, afin de passer à l'utilisation de ces hashsets.
Je me demandais si quelqu'un est au courant d'un hashset mise en œuvre conçue dans cet esprit, ou un moyen d'utiliser le 3.5 hashset dans VS2005.
Vous devez vous connecter pour publier un commentaire.
Vous pouvez utiliser
HashSet<T>
dans un 2.0 demande maintenant - tout de référence System.Core.dll et vous devriez être bon d'aller.Remarque: Ce serait vous obliger à installer le .NET framework 3.5 qui est gratuit et séparée à partir de Visual Studio. Une fois que vous avez installé, vous aurez le nouveau Système.Assemblage de base qui contient les
HashSet<T>
type. Depuis l' .NET versions des frameworks 2.0 - 3.5 partagent tous la même CLR vous pouvez utiliser cette assemblée dans vos 2.0 de l'application sans aucun problème.En voici un que j'ai écrit pour la 2.0 qui utilise un Dictionnaire<objet> à l'interne. Ce n'est pas une correspondance exacte de la 3.5 HashSet<T>, mais il fait le travail pour moi.
Dictionary<>
principales méthodes (y comprisConstainsKey
) sont hachés O(1) et implémentations très similaire à HashSet les méthodes d'un objet analogue.ContainsValue
est O(n). L'un des buts de Dictionnaire est d'offrir une haute vitesse de recherche pour les clés, plutôt que d'utiliser un index dans un tableau.Vous pouvez utiliser Iesi.Collections (utilisé par NHibernate) ou De Mono HashSet
La C5 Bibliothèque a aussi un HashSet mise en œuvre.
Je pense que PowerCollections bibliothèque doit s'adapter à vos besoins. C'est une bibliothèque open source qui contient plusieurs classes de collection qui ont disparu dans .NET, y compris
Set<T>
,Bag<T>
,MultiDictionary
etc. Il s'exécute .NET 2.0. Je l'ai utilisé pendant quelques années maintenant et je suis très heureux avec elle.Vous pouvez alias le Dictionnaire comme Hashset avec l'aide de la directive. Pas vraiment la même chose, mais il pourrait simplifier les choses pour vous plus tard.