À l'aide d'une Liste, de Recherche ou de Dictionnaire pour une grande liste de données

J'ai une classe statique dans ma Bibliothèque de Classe appelé de Recherche, j'utilise cette classe pour rechercher des valeurs différentes (dans ce cas, les Emplacements).

Ces valeurs peuvent être au nombre de plusieurs centaines. Étant donné que 95% de mes clients d'installer mon application sur un ordinateur sans Internet, je suppose que mon applications n'auront pas accès à internet ou de l'accès à une base de données.

Donc je veux savoir si c'est un moyen efficace de ce traitement et si je suis en disposer correctement de l'objet lorsque la méthode est fait:

CODE :

using System;
using System.Collections.Generic;
namespace FunctionLibrary
{
public static class Lookups
{
private static List<Vers> Versions;
public static string GetVersion(string s)
{
string retValue = string.Empty;
Versions = new List<Vers>();
try
{
if (s.Trim().Length > 0)
{
GetVersions();
retValue = Versions.Find(ver => ver.VersionNumber == s).VersionLiteral;
if (string.IsNullOrEmpty(retValue))
{
retValue = string.Format("{0} is an Unknown Version Number", s);
}
}
else
{
retValue = "No version number supplied";
}
}
catch
{
retValue = string.Format("{0} is an Unknown Version Number", s);
}
finally
{
Versions.Clear();
Versions = null;
}
return retValue;
}
private static void GetVersions()
{
Versions.Add(new Vers() { VersionNumber = "0000", VersionLiteral = "Location 1" });
Versions.Add(new Vers() { VersionNumber = "0001", VersionLiteral = "Location 2" });
Versions.Add(new Vers() { VersionNumber = "0002", VersionLiteral = "Location 3"});
Versions.Add(new Vers() { VersionNumber = "0003", VersionLiteral = "Location 4"});
Versions.Add(new Vers() { VersionNumber = "0004", VersionLiteral = "Location 5"});
Versions.Add(new Vers() { VersionNumber = "0005", VersionLiteral = "Location 6"});
Versions.Add(new Vers() { VersionNumber = "0006", VersionLiteral = "Location 7"});
Versions.Add(new Vers() { VersionNumber = "0007", VersionLiteral = "Location 8"});
}
}
public class Vers
{
public string VersionLiteral { get; set; }
public string VersionNumber { get; set; }
}
}

Je suis également demandais si je devrais utiliser un Dictionnaire ou une Recherche au lieu de la liste. Je ne veux pas de multiples appels à cette méthode pour provoquer des problèmes de mémoire.

  • L'utilisation de générique list<T>, où T est votre classe personnalisée me semble très bien - un moyen approprié de l'aide.
  • Ce ne semble pas être tout à fait inefficace façon de gérer cela. Je n'hésiterais pas à utiliser un dictionnaire, et au lieu de remplir la Liste des Versions (dictionnaire) chaque fois que vous effectuez un appel à GetVersion, seul le remplissage de la première fois (en vérifiant si la Liste des Versions/Dictionnaire est nulle; si c'est => le remplir, sinon lire). Comme je n'ai pas accès à VS (et je n'ai pas utilisé le C# pour un certain temps, donc je ne pense que je peux le faire sans la complétion de code), je ne peux pas vous donner un exemple, je pense qu'il devrait être assez facile, mais... Edit: voir eyossi de la réponse 🙂
InformationsquelleAutor Mark Kram | 2012-07-22