KeyValuePair列表

ser*_*hio 1 .net

为什么.NET不提供类List<KeyValuePair<T, U>>

我认为当你需要保持一对数组时,有很多情况.例如,

1; 2      "a"; "array"
5; 8      "b"; "browser"
1; 9      "f"; "Firefox"
8; 10     "f"; "frequency"
Run Code Online (Sandbox Code Playgroud)

Àla:

Pairs<int, int> myPairs;

myPairs.Add(10, 8);
myPairs.Add(5, 8);
myPairs.Add(10, 5);
myPairs.Add(1, 4);

myPairs[0].Value1 = 5;
myPairs[5].Value2 = 8;
Run Code Online (Sandbox Code Playgroud)

Jon*_*eet 9

这似乎对我来说完全没用 - 只是因为你有一对价值观并不意味着它也必然是一个关键/价值关系.

.NET 4引入了Tuple类型系列...除非这确实一个键/值对,否则我会使用List<Tuple<T1, T2>>- 我认为没有理由为了封装该构造而存在单个类型.

编辑:要把它放到上下文中,这里使用的是"困难" Tuple,转换您的示例代码:

var myPairs = new List<Tuple<int, int>> {
    Tuple.Create(10, 8),
    Tuple.Create(5, 8),
    Tuple.Create(10, 5),
    Tuple.Create(1, 4),
};
Run Code Online (Sandbox Code Playgroud)

现在元组是不可变的,所以你不能按照代码的最后一部分直接设置值......但是编写 "list"和"value of values"两个概念的美妙之处在于你可以轻松编写自己的MutableTuple类型并使用完全相同的代码...而如果您有一个硬连线Tuple或其他类型的集合类,您将没有这种灵活性.