我必须存储一对非唯一的字符串,所以我可以使用:
"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?
答案 0 :(得分:10)
您应该可以使用List<KeyValuePair<string, string>>
。
KeyValuePair<TKey, TValue>
结构本身不需要唯一的密钥,即使您将它们收集在一个列表中也是如此。
如果您认为KVP在语义上不符合您的要求,请使用自定义类型。无论您的自定义类型是类还是结构都无关紧要。
答案 1 :(得分:2)
仅仅List<string[]>
呢?
var list = new List<string[]>();
list.Add(new [] { "A", "B"});
foreach(var pair in list)
{
Console.WriteLine(pair[0] + pair[1]);
}
答案 2 :(得分:0)
你可以使用List<KeyValuePair<string,string>>
,但为了避免密钥的语义(因为你说它不是唯一的),我会使用List<Tuple<string,string>>
几乎相同,但语义不同。