2 Stimmen

IEnumerable-Schnittstelle als Typ?

Während ich lernte, LINQ in VB.NET zu verwenden, stieß ich auf das Folgende:

Dim x As IEnumerable = (some LINQ query)

Wenn man eine Schnittstelle nicht instanziieren kann, sondern nur eine konkrete Implementierung davon, warum ist das erlaubt? Gibt es einen Unterschied zwischen Dim x as (Typ) und Dim x as New (Typ)?

3voto

Jacob Mattison Punkte 48729

Ja, ein großer Unterschied. In dem Code, den Sie angeben, deklarieren Sie eine Variable, die auf ein instanziiertes Objekt verweisen soll. Sie weiß nicht unbedingt, um welche Art von Ding es sich handelt, aber sie weiß, dass es IEnumerable implementiert. In dem von Ihnen angegebenen Code wird die tatsächliche Instanziierung als ein konkreter Typ (der IEnumerable implementiert) von LINQ verarbeitet. Der Teil auf der rechten Seite muss zu einer konkreten Instanziierung führen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X