2017-06-12 54 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

它只是取決於你想如何使用方法和類型。你的具體例子幾乎沒有區別,但在其他情況下,你希望整個對象在相同的類型上運行。坦率地說,你不會看到帶有泛型_methods_的_interface_,因爲接口通常是關於整個對象的。但是,如果你有一種情況,你只需要在界面中使用一種或多種方法,那麼就可以使它們成爲通用的,出於同樣的原因,你可以在課堂上做到這一點。有關更多信息,請參見標記的重複項 –

回答

2

是的,非通用方法不能強制通用方法以具有特定類型的參數。通用接口可以。

在您的IMyInterface<T>.MyMethod,T只能是IMyInterface<T>所使用的完全相同的類型。在IMyInterface.MyMethod,T可以是任何東西(只要它服從類型約束T : class)。

+0

謝謝你的回答 – Abi