Dies ist etwas, das ich festgestellt, während der C# IList Sammlungen mitObjektzuordnung in C#
IList<MyClass> foo = new List<MyClass>();
var bar = new List<MyClass>();
foo.AddRange() // doesn't compile
bar.AddRange() // compile
Soweit ich weiß, in C# (im Gegenteil von C++), wenn wir ein Objekt mit dieser Syntax zu erstellen, die Objekttyp erhält die rechte Seite (Zuweisung) und nicht die linke (Deklaration).
Vermisse ich etwas hier!
EDIT
ich es immer noch nicht erhalten, auch nachdem Sie Ihre Antworten, foo und bar die gleiche Art haben!
"var" ist vom Typ Liste, die die Methode "AddRange" hat, während foo vom Typ IList ist, die eine Schnittstelle ist, die nicht über die "AddRange" -Methode verfügt. –
sjkm
Aber beide werden instanziiert mit dem Typ Liste –
@Schneider Das ist wahr, aber aus Sicht des Compilers ist 'foo' vom Typ' IList <> 'nicht' List <> ' – rhughes