通过 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<…>).

的助手类型