Что является наиболее эффективным аналогом C # Delphi для TStringList в C #? - PullRequest
4 голосов
/ 25 января 2011

В нашем приложении Delphi мы используем TStringList для хранения строк и соответствующих объектов.Для другого проекта мне нужно сделать что-то подобное в C #, но я не уверен, каков наиболее эффективный способ сделать это.До сих пор я думал об использовании списка массивов, списка или словаря.Будет ли один из них эффективным в том, что я хочу сделать?Если нет, то какой путь лучше?

Ответы [ 6 ]

9 голосов
/ 25 января 2011

Зависит от того, какие функции TStringList вам нужны.Там на самом деле не прямая замена.

A dictionary<string,object> неупорядочено, и у вас не может быть повторяющихся строк.Нет свойства Text для одновременной установки всех строк и т. Д. Если у вас все в порядке, я бы пошел на это.

В противном случае вы можете рассмотреть определение небольшого класса, например:

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

и затем используйте List<Item>.Это дает вам упорядоченный список (строка, объект) кортежей.

3 голосов
/ 25 января 2011

Если строки уникальны, используйте Dictionary<string, T>.Если не гарантируется, что они уникальны, словарь не будет подходящим, и вы, возможно, захотите использовать список Tuple<string, T> (C # 4) или, возможно, список KeyValuePair<string, T>, который будет очень похож на словарь, кромеочевидно, не гарантирует уникальность, и сохраняет порядок, в котором словарь не обязательно делает это.

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

Наконец, вы можете определить свой собственный тип инкапсуляции и создать список , что , если выне хотите использовать одно из других решений.

1 голос
/ 25 января 2011

Это зависит от функций, которые вам нужны для вашей коллекции. Я бы использовал Dictionary<string, object> (дженерики).

0 голосов
/ 25 января 2011

Универсальная версия:

List<string>

Прямая, не универсальная (не использовать!):

ArrayList

См. MSDN: 1 , 2

0 голосов
/ 25 января 2011

это сообщение в блоге показывает отличия между SortedList и Dictionary довольно неплохо

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

0 голосов
/ 25 января 2011

Для небольшого списка объектов я бы использовал Dictionary<string,xxx>, где xxx - это тип объекта, который вы хотите сохранить, проиндексированный по строке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...