10

(異なる名前を使用することを除いて)同じ名前で異なるインターフェースを実装するいくつかのジェネリックメソッドを持つことはできませんか?

public IList<T> List<T>() where T : class, IMyInterface1
{

    return mylist
}

public IList<T> List<T>() where T : class, IMyInterface2
{

    return mylist
}

ありがとう、

4

1 に答える 1

12

いいえ、ジェネリック型の定数だけでオーバーロードすることはできません。型パラメーターの数によってオーバーロードできますが、それらの制約ではオーバーロードできません。

インターフェイスを実装している場合は、明示的なインターフェイス実装を使用できます。それ以外の場合は、別の名前を使用することをお勧めします。正直なところ、別の名前を使用すると、とにかく物事が明確になることがよくあります。

あなたが与えた例はとにかく自然なあいまいさを導入していることに注意してください.型引数が両方のインターフェースを実装した場合、何が呼び出されると思いますか?

于 2012-07-16T08:29:05.453 に答える