通过 C# VS2013 中的 IEnumerator 和 GetEnumerator 同时迭代 3 个字典
iterate 3 dictionaries at the same time by IEnumerator and GetEnumerator from C# VS2013
我需要从 C# VS2013 一起迭代 3 个字典。
// got error: Cannot implicitly convert type 'System.Collections.Generic.Dictionary<double,double>.Enumerator' to 'System.Collections.Generic.IEnumerator<System.Collections.Generic.Dictionary<double,double>>'
using (IEnumerator<Dictionary<double,double>> iterator1 = dict1.GetEnumerator())
using (IEnumerator<Dictionary<double,double>> iterator2 = dict2.GetEnumerator())
using (IEnumerator<Dictionary<double,double>> iterator3 = dict3.GetEnumerator())
while (iterator1.MoveNext() && iterator2.MoveNext() && iterator3.MoveNext())
{
iterator1.Current. // I need to access key and values of dict1 here. Why none of them can be accessed here ?
}
如有任何帮助,我们将不胜感激。
Dictionary<K,V>
的枚举器将实现 IEnumerator<KeyValuePair<K, V>>
。
但这确实是 var
使事情变得容易得多的情况:
using (var iterator1 = dict1.GetEnumerator())
using (var iterator2 = dict2.GetEnumerator())
using (var iterator3 = dict3.GetEnumerator())
…
将鼠标悬停在Visual Studio中的var
上会告诉你推断的类型,如果你需要覆盖那个推断,你只需要指定类型(在这种情况下很可能是 Dictionary<T,V>
用来实现 IEnumerator<…>
).
的助手类型
我需要从 C# VS2013 一起迭代 3 个字典。
// got error: Cannot implicitly convert type 'System.Collections.Generic.Dictionary<double,double>.Enumerator' to 'System.Collections.Generic.IEnumerator<System.Collections.Generic.Dictionary<double,double>>'
using (IEnumerator<Dictionary<double,double>> iterator1 = dict1.GetEnumerator())
using (IEnumerator<Dictionary<double,double>> iterator2 = dict2.GetEnumerator())
using (IEnumerator<Dictionary<double,double>> iterator3 = dict3.GetEnumerator())
while (iterator1.MoveNext() && iterator2.MoveNext() && iterator3.MoveNext())
{
iterator1.Current. // I need to access key and values of dict1 here. Why none of them can be accessed here ?
}
如有任何帮助,我们将不胜感激。
Dictionary<K,V>
的枚举器将实现 IEnumerator<KeyValuePair<K, V>>
。
但这确实是 var
使事情变得容易得多的情况:
using (var iterator1 = dict1.GetEnumerator())
using (var iterator2 = dict2.GetEnumerator())
using (var iterator3 = dict3.GetEnumerator())
…
将鼠标悬停在Visual Studio中的var
上会告诉你推断的类型,如果你需要覆盖那个推断,你只需要指定类型(在这种情况下很可能是 Dictionary<T,V>
用来实现 IEnumerator<…>
).