Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/307.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Dictionary.Keys.ToArray()与Dictionary.Values.ToArray()的顺序_C#_Dictionary_Implementation_Processing Efficiency - Fatal编程技术网

C# Dictionary.Keys.ToArray()与Dictionary.Values.ToArray()的顺序

C# Dictionary.Keys.ToArray()与Dictionary.Values.ToArray()的顺序,c#,dictionary,implementation,processing-efficiency,C#,Dictionary,Implementation,Processing Efficiency,我有一个关于字典实现细节的问题 假设以下代码: private IDictionary<Int64, Int32> _data = new Dictionary<Int64, Int32>(); private void Foo() { Int64[] keys = _data.Keys.ToArray<Int64>(); Int32[] vals = _data.Values.ToArray<Int32>(); //

我有一个关于字典实现细节的问题

假设以下代码:

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
}
对于[0..\u data.Length-1]中的每个
i,或者两个数组的顺序可能不相关吗?

为什么不这样做呢

private void Foo() 
{
    Int64[] keys = _data.Keys.ToArray<Int64>();
    Int32[] vals = _data.Keys.Select(k => _data[k]).ToArray<Int32>();

    // Further code goes here
}
private void Foo()
{
Int64[]keys=_data.keys.ToArray();
Int32[]vals=_data.Keys.Select(k=>_data[k]).ToArray();
//进一步的代码在这里
}
现在仍然是O(n)时间,如果.NET在将来发生更改,它将不会中断。

为什么不这样做呢

private void Foo() 
{
    Int64[] keys = _data.Keys.ToArray<Int64>();
    Int32[] vals = _data.Keys.Select(k => _data[k]).ToArray<Int32>();

    // Further code goes here
}
private void Foo()
{
Int64[]keys=_data.keys.ToArray();
Int32[]vals=_data.Keys.Select(k=>_data[k]).ToArray();
//进一步的代码在这里
}
现在仍然是O(n)时间,如果.NET在将来发生更改,它将不会中断。

为什么不这样做呢

private void Foo() 
{
    Int64[] keys = _data.Keys.ToArray<Int64>();
    Int32[] vals = _data.Keys.Select(k => _data[k]).ToArray<Int32>();

    // Further code goes here
}
private void Foo()
{
Int64[]keys=_data.keys.ToArray();
Int32[]vals=_data.Keys.Select(k=>_data[k]).ToArray();
//进一步的代码在这里
}
现在仍然是O(n)时间,如果.NET在将来发生更改,它将不会中断。

为什么不这样做呢

private void Foo() 
{
    Int64[] keys = _data.Keys.ToArray<Int64>();
    Int32[] vals = _data.Keys.Select(k => _data[k]).ToArray<Int32>();

    // Further code goes here
}
private void Foo()
{
Int64[]keys=_data.keys.ToArray();
Int32[]vals=_data.Keys.Select(k=>_data[k]).ToArray();
//进一步的代码在这里
}

现在仍然是O(n)时间,如果.NET在未来发生变化,它将不会中断。

如果你现在可以证明它是正确的,你可能无法假设明天(或新版本的.NET发布时)它将是正确的。同意Marcin的观点。还有,为什么需要这个?我正在编写自己的序列化例程,需要对这些数组进行排序。我被限制在分类列表上使用字典,等等,你为什么要把字典分成两个单独的数组?如果你现在能证明它是真的,你可能不能假设明天(或新版本的.NET发布时)它是真的。同意Marcin的观点。还有,为什么需要这个?我正在编写自己的序列化例程,需要对这些数组进行排序。我被限制在分类列表上使用字典,等等,你为什么要把字典分成两个单独的数组?如果你现在能证明它是真的,你可能不能假设明天(或新版本的.NET发布时)它是真的。同意Marcin的观点。还有,为什么需要这个?我正在编写自己的序列化例程,需要对这些数组进行排序。我被限制在分类列表上使用字典,等等,你为什么要把字典分成两个单独的数组?如果你现在能证明它是真的,你可能不能假设明天(或新版本的.NET发布时)它是真的。同意Marcin的观点。还有,为什么需要这个?我正在编写自己的序列化例程,需要对这些数组进行排序。我只能在分类列表上使用字典,等等,为什么要将字典分成两个单独的数组?