Sì, non fa differenza in questo caso. In alcuni casi è possibile fare, se si utilizza una classe base che implementa già un'interfaccia ma si desidera reimplementarla esplicitamente - ma in questo caso non c'è una classe base (diversa dall'implicito object
) e si sarebbe comportato esattamente allo stesso modo.
Contrariamente ai miei ricordi, non credo che ci sia una differenza nel modo in cui la classe viene rappresentata nei metadati, indipendentemente dal fatto che il codice dichiari esplicitamente tutte le interfacce o meno. Ecco un esempio:
interface IFoo {}
interface IBar : IFoo {}
class FooBar1 : IBar {}
class FooBar2 : IBar, IFoo {}
Sia ildasm e riflettore mostrano le stesse informazioni per FooBar1
e FooBar2
... mostra entrambi applicazione IBar
e IFoo
.
In altre parole, non è possibile stabilire se il codice sorgente originale per List<T>
specifica effettivamente tutte le interfacce o meno. Forse lo fa, forse no - ma non importa in entrambi i casi.
MODIFICA: per completezza, ho anche controllato i casi in cui si stanno estendendo due interfacce con un'altra interfaccia. In questo caso, non riesco a trovare una differenza nei metadati. Sono sicuro di ricordare alcune situazioni in cui era evidente, ma non riesco a trovarlo ora.
fonte
2010-07-11 18:04:13
Quindi, poiché non esiste una classe base. Non fa differenza. Allora perché gli sviluppatori hanno ereditato quelle due interfacce 'di nuovo'? –
@Marco: vedere la mia risposta modificata. –
Capito. Grazie mille. È stato veloce. –