Мне нужно сохранить пару неуникальных строк, поэтому у меня может быть что-то вроде:
"A", "B"
"A","C"
Я не могу использовать Dictionary или HashTable, потому что у меня нет уникального ключа. Подумал над парочкой вариантов:
List<List<string>,List<string>> = new List<List<string>,List<string>>(); //Too long?
Создайте класс или структуру (что лучше?) Для хранения моих пар, а затем сохраните их в списке, поэтому
class pairs
{
}
List<pairs> values = new List<pairs>();
Мне также просто нужно иметь возможность перечислять пары, поэтому мне не нужно беспокоиться о запросах, сортировке и сравнении. По этой причине лучше всего использовать наименее конкретный тип, например Enumerable?
3 ответа
Вы должны уметь использовать List<KeyValuePair<string, string>>
.
Сами по себе структуры KeyValuePair<TKey, TValue>
не требуют уникальных ключей, даже если вы собираете их в один список.
Если вы думаете, что KVP семантически не соответствуют тому, что вы хотите, просто выберите собственный тип. Не имеет значения, является ли ваш настраиваемый тип классом или структурой.
А как насчет просто List<string[]>
?
var list = new List<string[]>();
list.Add(new [] { "A", "B"});
foreach(var pair in list)
{
Console.WriteLine(pair[0] + pair[1]);
}
Вы можете использовать List<KeyValuePair<string,string>>
, но чтобы избежать семантики ключа (поскольку вы сказали, что он не является уникальным), я бы использовал List<Tuple<string,string>>
, который практически такой же но с другой семантикой.
Похожие вопросы
Новые вопросы
c#
C # (произносится как «резкий») - это высокоуровневый, статически типизированный язык программирования с несколькими парадигмами, разработанный Microsoft. Код C # обычно нацелен на семейство инструментов и сред выполнения Microsoft .NET, включая, среди прочего, .NET Framework, .NET Core и Xamarin. Используйте этот тег для вопросов о коде, написанном на C # или в формальной спецификации C #.