4 votes

Quelle est la contrepartie la plus efficace du C# à la TStringList de Delphi ?

Dans notre application Delphi, nous utilisons une TStringList pour stocker les chaînes de caractères et les objets correspondants. Pour un autre projet, je dois faire quelque chose de similaire en C#, mais je ne suis pas sûr de la manière la plus efficace de le faire. Jusqu'à présent, j'ai pensé à utiliser un tableau, une liste ou un dictionnaire. L'une de ces méthodes serait-elle efficace pour réaliser ce que je veux faire ? Si non, quelle est la meilleure solution ?

9voto

Blorgbeard Points 38991

Cela dépend des fonctionnalités de TStringList dont vous avez besoin. Il n'y a pas vraiment de remplacement direct.

A dictionary<string,object> n'est pas ordonnée, et vous ne pouvez pas avoir de chaînes en double. Il n'y a pas de propriété Text pour définir toutes les chaînes en même temps, etc. Si tout cela vous convient, j'opterais pour cette solution.

Sinon, vous pourriez envisager de définir une petite classe comme :

public class Item { 
  public string String {get;set;} 
  public object Object {get;set;}
}

et ensuite utiliser List<Item> . Cela vous donne une liste ordonnée de tuples (string,object).

3voto

Anthony Pegram Points 58528

Si les chaînes de caractères sont uniques, optez pour l'option Dictionary<string, T> . S'il n'est pas garanti qu'ils soient uniques, un dictionnaire ne sera pas approprié et vous voudrez peut-être utiliser une liste d'éléments d'information. Tuple<string, T> (C# 4) ou peut-être une liste de KeyValuePair<string, T> qui serait très similaire à un dictionnaire, sauf qu'il ne garantit évidemment pas l'unicité, et il préserve l'ordre là où un dictionnaire ne le ferait pas nécessairement.

Dictionary<string, T>> yourDictionary; // or
List<Tuple<string, T>> yourCollection; // or
List<KeyValuePair<string, T>> yourCollection;

Enfin, vous pouvez définir votre propre type d'encapsulation et créer une liste de que si vous ne souhaitez pas utiliser l'une des autres solutions.

1voto

Richard Points 11249

Cela dépend des caractéristiques dont vous avez besoin pour votre collection. J'utiliserais Dictionary<string, object> (génériques).

0voto

Jamiec Points 35773

Pour une petite liste d'objets, j'utiliserais Dictionary<string,xxx> donde xxx est le type d'objet que vous voulez stocker indexé par chaîne.

0voto

Kolja Points 737

Cet article de blog montre très bien les différences entre SortedList et Dictionary.

http://blog.bodurov.com/Performance-SortedList-SortedDictionary-Dictionary-Hashtable/

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X