Hashtable
このクラスを持たない環境に使用するコードを移植しようとしています。だから私はコードを台無しにしないで、次のように独自のものを作成することを考えましHashtable
たDictionary
:
public class Hashtable : Dictionary<Object, Object> {
// ...
new public IDictionaryEnumerator GetEnumerator() {
var ie = base.GetEnumerator();
while (ie.MoveNext())
yield return new DictionaryEntry(ie.Current.Key, ie.Current.Value);
}
}
次のエラーが表示されます。
エラー CS1624: 'System.Collections.Hashtable.GetEnumerator()' の本体は、'System.Collections.IDictionaryEnumerator' が反復子インターフェイス型ではないため、反復子ブロックにすることはできません
まあ、しかしIDictionaryEnumerator
から継承しIEnumerator
ます。
奇妙なことは、コードを返すだけで(IDictionaryEnumerator)base.GetEnumerator();
コンパイルされることです (ただし、実行時に foreach ループで失敗します)。
このエラーの意味がわかりません。また、これを適切に実装する方法もわかりません。