8

私はインターフェースを持っています

interface IInterface<E>{
    E Foo();
}

次に、このようなクラスを作成します

class Bar : IInterface<String>, IInterface<Int32> {
}

これは実際には非常にうまく機能しますが、次のように、インターフェイスを明示的に使用して2つの関数の1つを定義する必要があります。

class Bar : IInterface<String>, IInterface<Int32> {
    String Foo();
    Int32 IInterface<Int32>.Foo();
}

欠点は、明示的なインターフェイスを持つFoo()に到達するたびにキャストを実行する必要があることです。

これに対処する際のベストプラクティスは何ですか?

私はパフォーマンスに非常に依存するアプリケーションを実行しているので、1秒あたり100万回のキャストを実行したくありません。これはJITが理解するものですか、それともインスタンスのキャストバージョンをそれ自体に保存する必要がありますか?

私はこの特定のコードを試していませんが、私が行っていることに非常に近いように見えます。

4

1 に答える 1