Frage

Ich verstehe nicht, warum IList IEnumerable implementiert in Betracht zu ziehen, die IList ICollection implementiert, die IEnumerable implementiert auch.

War es hilfreich?

Lösung

Ich nehme an, Sie wollen wissen, warum erklärt er, dass es ICollection sowie IEnumerable implementiert, wenn die erste, die zweite bedeutet. Ich vermute, dass der Hauptgrund ist Klarheit: Es bedeutet, die Menschen müssen ICollection zu nicht zurückblicken zu prüfen, ob das schon reicht IEnumerable

.

Es gibt auch andere Zeiten, in denen Sie eine Schnittstelle-Implementierung neu deklarieren müssen, wenn Sie eine Interface-Methode neu implementieren wollen, die vorher ausdrücklich in einer Basisklasse implementiert wurden - aber ich glaube nicht, das ist der Grund, in diesem Fall <. / p>

EDIT: Ich habe angenommen, dass der Quellcode, der die Dokumentation von gebaut werden beide Schnittstellen die Deklaration einschließlich hat. Eine weitere mögliche Alternative ist, dass alle Schnittstellen in der Hierarchie wird automatisch vom doc Generator eingezogen. In diesem Fall stellt sich die Frage: „Warum hat der Doc Generator tun.“ - und die Antwort ist fast sicher noch „Klarheit“

Andere Tipps

IList nur implementiert IEnumerable von Verbands; das heißt, es IEnumerable genau weil implementiert es ICollection erbt das ist IEnumerable. Sie würden das gleiche mit Typhierarchien (auch wenn nur einfache Vererbung erhalten:

class Enumerable {}
class Collection : Enumerable {}
class List : Collection {}

so List ist ein Enumerable; in gleicher Weise ist IList IEnumerable.

Zum Beispiel, wenn ich schreibe:

interface IA {}
interface IB : IA { }
interface IC : IB { }

Und bei den Metadaten suchen, dann scheint es, dass IC : IA, IB - aber das ist nur indirekt; hier ist die IL:

.class private interface abstract auto ansi IA
{
}
.class private interface abstract auto ansi IB
    implements IA
{
}
.class private interface abstract auto ansi IC
    implements IB, IA
{
}

Wenn Sie den Code in ReSharper zu öffnen, wäre es die IEnumerable Interface-Deklaration auf IList zeigt, dass nicht erforderlich war, da sie bereits über ICollection angegeben ist.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top