Sí, no hace ninguna diferencia en este caso. En algunos casos, puede marcar, si está utilizando una clase base que ya implementa una interfaz pero desea volver a implementarla usted mismo explícitamente, pero en este caso no hay una clase base (que no sea la object
implícita) y se habría comportado exactamente de la misma manera.
Al contrario de lo que recuerdo, no creo que haya una diferencia en la forma en que se representa la clase en los metadatos, ya sea que el código declare explícitamente todas las interfaces o no. He aquí un ejemplo:
interface IFoo {}
interface IBar : IFoo {}
class FooBar1 : IBar {}
class FooBar2 : IBar, IFoo {}
Tanto ildasm y el reflector mostrar la misma información para FooBar1
y FooBar2
... se nota tanto de ellos implementar IBar
y IFoo
.
En otras palabras, no podemos decir si el código fuente original para List<T>
realmente especifica todas las interfaces o no. Quizás sí, quizás no, pero no importa de ninguna manera.
EDITAR: Para completar, también verifiqué los casos en los que está extendiendo dos interfaces con otra interfaz. No puedo encontrar una diferencia en los metadatos en ese caso, tampoco. Estoy seguro de recordar alguna situación en la que era evidente, pero no puedo encontrarla ahora.
Entonces ya que no hay una clase base. No hace la diferencia. Entonces, ¿por qué los desarrolladores heredaron esas dos interfaces 'otra vez'? –
@Marco: ver mi respuesta editada. –
Entendido. Muchas gracias. Eso fue rápido. –