Dictionary.Keys.ToArray() 与 Dictionary.Values.ToArray() 的顺序
Order of Dictionary.Keys.ToArray() vs Dictionary.Values.ToArray()
我对 Dictionary 的实现细节有疑问
假设以下代码:
private IDictionary<Int64, Int32> _data = new Dictionary<Int64, Int32>();
private void Foo()
{
Int64[] keys = _data.Keys.ToArray<Int64>();
Int32[] vals = _data.Values.ToArray<Int32>();
// Further code goes here
}
我现在可以假设
_dict[keys[i]] == vals[i]
对于每个 i in [0 .. _data.Length-1]
,或者两个数组的顺序可能无关?
为什么不这样做呢?
private void Foo()
{
Int64[] keys = _data.Keys.ToArray<Int64>();
Int32[] vals = _data.Keys.Select(k => _data[k]).ToArray<Int32>();
// Further code goes here
}
还是O(n)的时间,以后.NET改了也不会坏。
我对 Dictionary 的实现细节有疑问
假设以下代码:
private IDictionary<Int64, Int32> _data = new Dictionary<Int64, Int32>();
private void Foo()
{
Int64[] keys = _data.Keys.ToArray<Int64>();
Int32[] vals = _data.Values.ToArray<Int32>();
// Further code goes here
}
我现在可以假设
_dict[keys[i]] == vals[i]
对于每个 i in [0 .. _data.Length-1]
,或者两个数组的顺序可能无关?
为什么不这样做呢?
private void Foo()
{
Int64[] keys = _data.Keys.ToArray<Int64>();
Int32[] vals = _data.Keys.Select(k => _data[k]).ToArray<Int32>();
// Further code goes here
}
还是O(n)的时间,以后.NET改了也不会坏。