Это то, что я столкнулся при использовании коллекции C# IListназначения объекта в C#
IList<MyClass> foo = new List<MyClass>();
var bar = new List<MyClass>();
foo.AddRange() // doesn't compile
bar.AddRange() // compile
Насколько я знаю, в C# (наоборот от C++), когда мы создаем объект с этим синтаксисом тип объекта получает правую сторону (присвоение), а не левую (декларация).
Пропустить что-то здесь!
EDIT
Я до сих пор не понимаю, даже после того, как ваши ответы, Foo и бар имеют одинаковый тип!
«var» относится к списку типов, который имеет метод «AddRange», тогда как foo имеет тип IList , который является интерфейсом, который не имеет метода «AddRange». –
sjkm
Но оба они получают экземпляр типа List –
@Schneider Это верно, но с точки зрения компилятора 'foo' имеет тип' IList <> 'not' List <> ' – rhughes