C# がDictionaryを実装する方法を理解しようとしています。Dictionary は、次のメソッドの実装を必要とする IEnumerable から継承することになっているようです。
IEnumerable GetEnumerator()
ただし、C# ディクショナリは代わりに次を実装します。
Dictionary<T>.Enumerator GetEnumerator()
Enumeratorは、IEnumerator を継承するネストされた構造体です。
この関係の例を作成しました。
public interface IFoo
{
IFoo GetFoo();
}
public abstract class Foo : IFoo
{
public abstract FooInternal GetFoo();
public struct FooInternal : IFoo
{
public IFoo GetFoo()
{
return null;
}
}
}
ただし、これはコンパイルされず、次のエラーが発生します。
Error 2 'Foo' does not implement interface member 'IFoo.GetFoo()'. 'Foo.GetFoo()' cannot implement 'IFoo.GetFoo()' because it does not have the matching return type of 'CodeGenerator.UnitTests.IFoo'. Foo.cs 14
ここで私が間違っているかもしれないことについて何か考えはありますか? C# は Dictionary をどのように実装しますか? サンプル コードを C# ディクショナリと同様にコンパイルするにはどうすればよいでしょうか?