1

Hashtableこのクラスを持たない環境に使用するコードを移植しようとしています。だから私はコードを台無しにしないで、次のように独自のものを作成することを考えましHashtableDictionary:

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 ループで失敗します)。

このエラーの意味がわかりません。また、これを適切に実装する方法もわかりません。

4

1 に答える 1