2017-06-12 9 views
0

「汎用インターフェイス」と「非汎用インターフェイスの汎用メソッド」の違いは何ですか? もう一方の利点はありますか?非ジェネリックインターフェイスの汎用メソッド

interface IMyInterface 
{ 
    void MyMethod<T>(T param) where T : class; 
} 

interface IMyInterface<T> where T : class 
{ 
    void MyMethod(T param) 
} 
+2

違いはジェネリッククラスと非ジェネリッククラスの場合と同様です。 –

+0

インタフェースのジェネリックインタフェースの実装でもジェネリックでなければならないか、具体的なタイプを使用する必要があります。ジェネリックメソッドはジェネリックとして使用でき、具体的なタイプはランタイムで定義できます – Fabio

+0

メソッドとタイプの使い方によって異なります。あなたの具体例にはほとんど違いはありませんが、他の場合にはオブジェクト全体を同じタイプで操作する必要があります。率直に言えば、インターフェイスは通常オブジェクト全体に関するものなので、_interface_に汎用_methods_はあまり表示されません。しかし、インターフェース内に1つ以上のメソッドしか必要としない状況があった場合は、クラスでそれを行うのと同じ理由で、それらを汎用的にすることになります。詳細については、重複したマークを参照してください。 –

答えて

2

はい、非ジェネリックメソッドは、特定のタイプのパラメータを持っている一般的な方法を強制することはできません。ジェネリックインターフェースは可能です。

IMyInterface<T>.MyMethodでは、Tは、IMyInterface<T>で使用されているのとまったく同じタイプにしかなりません。 IMyInterface.MyMethodでは、Tは何でもかまいません(タイプ制約T : classに従う限り)。

+0

ありがとうございます – Abi

関連する問題