Каков наилучший способ хранения пар строк, создания объекта или использования класса в .NET?

Не знаю, есть ли у меня "толстый день", но я просто подумал, что здесь лучший маршрут.

Context:

У меня есть список полей, и я хочу хранить с ними имена псевдонимов (я использую .NET 2.0 BTW), например.

enter image description here

Итак, его по существу пара строк:

ССЫЛКА, Ref

СООБЩЕСТВО, Сообщество

POST_CODE, почтовый индекс

... и я думаю, что все время кажется, что это слишком сложно, чтобы создавать объекты для таких вещей, поэтому я должен создать StringDictionary и сохранить значения таким образом, хотя я бы не использовал какую-либо функциональность класс StringDictionary, и я не обеспокоен связью пары значений ключа и т.д. - я просто хочу сохранить пару строк по существу.

Любая помощь/указатели будет отличной.

Ответы

Ответ 1

Вы можете использовать общий Dictionary<string, string>, если ваши "Имена полей" уникальны.

В противном случае вы можете использовать класс Lookup, если вы не против дублировать ключи.

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

Ответ 2

Общий класс "пары" для .NET - Tuple. Вы бы использовали его как:

var strings=new List<Tuple<string, string>>();
strings.Add(Tuple.Create("REFERENCE", "Ref"));

Словарь является совершенно приемлемой заменой, если самая левая строка уникальна (т.е. ключ). В противном случае вы получите ошибки.

Что касается того, лучше ли использовать встроенные коллекции или создать фактический объект, зависит от ваших потребностей (вы будете добавлять больше столбцов позже? вы не можете сделать это со словарным подходом), как часто вы используйте его (если это основной тип, вы, вероятно, должны создать для него модель домена) и т.д.

Изменить: Что касается использования каких-либо встроенных функций словаря, это не так: вы используете свой алгоритм бинарного поиска и внутреннюю конструкцию дерева для быстрого поиска. Список либо Tuple, либо ваш собственный тип, скорее всего, не будет иметь этого, и он вернется к линейному поиску.

Ответ 4

как насчет Tuple<string,string>? Он встроен в .net 4.0 и легкий.

Ответ 5

Для пар строк альтернативно используйте NameValueCollection

Ответ 6

На мой взгляд, лучше использовать настраиваемую структуру для хранения двух строк, потому что: System.Collections.Generic.Dictionary и System.Collections.Specialized.NameValueCollection требуют, чтобы метод Add добавлял в них строки - это дополнительные строки кода. Класс System.Tuple имеет только свойства ReadOnly - это может быть препятствием.

Пример простой структуры:

public struct DoppelWert
{
 public string Wert1; 
 public string Wert2;
}