我有这个对象:
class Animation
{
//[...]
private SortedList<int,Frame> frames = new SortedList<int,Frame>();
private IDictionaryEnumerator frameEnumerator = null;
//[...]
public void someFunction() {
frameEnumerator = frames.GetEnumerator(); //throw error
}
//[...]
}
我在那里查看msn文档:http://msdn.microsoft.com/en-us/library/system.collections.sortedlist.getenumerator.aspx,看起来我的代码是正确的,但VS说:
无法转换 System.Collections.Generic.IEnumerator&GT;” 到'System.Collections.IDictionaryEnumerator'。
答案 0 :(得分:4)
IDictionaryEnumerator
类型用于较旧的非泛型集合类型。在这种情况下,您有一个强类型集合,它将返回IEnumerater<KeyValuePair<int, Frame>>
。请改用该类型
private IEnumerator<KeyValuePair<int, Frame>> frameEnumerator = null;
注意:SortedList<TKey, TValue>
的枚举器类型确实实现了IDictionaryEnumerator
接口。如果您真的喜欢那个,可以使用显式转换来访问它
frameEnumerator = (IDictionaryEnumerator)frames.GetEnumerator();
我会避开这条路线。最好使用强类型接口,避免在代码中进行不必要的转换。
答案 1 :(得分:0)
尝试施放
frameEnumerator = frames.GetEnumerator() as IDictionaryEnumerator;
之后,请确保检查frameEnumerator
是否为空。