2017-06-12 5 views
0

Was ist der Unterschied zwischen einer generischen Schnittstelle und einer generischen Methode in einer nicht generischen Schnittstelle? Gibt es einen Vorteil gegenüber dem anderen?Generische Methode in nicht generischer Schnittstelle

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

und

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

Der Unterschied ist derselbe wie zwischen generischer Klasse und nicht-generischer Klasse mit generischen Methoden. –

+0

Der Unterschied, der bei der generischen Schnittstellenimplementierung der Schnittstelle auch generisch sein sollte, oder den konkreten Typ verwenden. Wo generische Methode verwendet werden kann, wie generische und konkrete Art kann in Laufzeit definiert werden – Fabio

+0

Es hängt nur davon ab, wie Sie die Methode und den Typ verwenden möchten. Es gibt wenig Unterschied in Ihrem spezifischen Beispiel, aber in anderen Fällen möchten Sie, dass ein ganzes Objekt auf demselben Typ operiert. Ehrlich gesagt, Sie werden kein _interface_ mit generischen _methoden_ viel sehen, weil eine Schnittstelle normalerweise über das ganze Objekt ist. Aber wenn Sie eine Situation hatten, in der Sie nur eine oder mehrere Methoden in einer Schnittstelle haben wollten, würden Sie sie generisch machen, aus demselben Grund, wie Sie das in einer Klasse tun würden. Weitere Informationen finden Sie in den markierten Duplikaten. –

Antwort

2

Ja, die nicht-generische Methode kann nicht die generische Methode zwingen, einen bestimmten Typ Parameter zu haben. Die generische Schnittstelle kann.

In Ihrer IMyInterface<T>.MyMethod, T kann nur genau der gleiche Typ von der IMyInterface<T> verwendet werden. In IMyInterface.MyMethod, T kann alles sein (solange es die Typbeschränkung T : class gehorcht).

+0

Vielen Dank für Ihre Antwort – Abi

Verwandte Themen