8 ответов:
вы можете, например, создать экземпляр
List<object>, который реализуетIEnumerable<object>. Пример:List<object> list = new List<object>(); list.Add(1); list.Add(4); list.Add(5); IEnumerable<object> en = list; CallFunction(en);
поскольку вы теперь указали, что хотите добавить к нему, то, что вы хотите, не просто
IEnumerable<T>но не менееICollection<T>. Я рекомендую просто использоватьList<T>такой:List<object> myList=new List<object>(); myList.Add(1); myList.Add(2); myList.Add(3);вы можете использовать myList везде
IEnumerable<object>ожидается, что, начиная сList<object>осуществляетIEnumerable<object>.(старый ответ до выяснения)
вы не можете создать экземпляр
IEnumerable<T>так как это обычный интерфейс(иногда можно указать значение по умолчанию реализации, но это обычно используется только с COM).так что вы действительно хотите создать экземпляр a класс что реализует интерфейс
IEnumerable<T>. Поведение зависит от выбранного класса.для пустой последовательности использовать:
IEnumerable<object> e0=Enumerable.Empty<object>();для непустого перечисляемого можно использовать некоторую коллекцию, которая реализует
IEnumerable<T>. Общие варианты-это массивT[],List<T>или если вы хотите неизменностьReadOnlyCollection<T>.IEnumerable<object> e1=new object[]{1,2,3}; IEnumerable<object> e2=new List<object>(){1,2,3}; IEnumerable<object> e3=new ReadOnlyCollection(new object[]{1,2,3});еще один распространенный способ реализации
IEnumerable<T>- это итератор функция введено в C# 3:IEnumerable<object> MyIterator() { yield return 1; yield return 2; yield return 3; } IEnumerable<object> e4=MyIterator();
нет, вы не можете с
IEnumerable- это интерфейс.вы должны быть в состоянии создать пустой экземпляр большинства неинтерфейсных типов, которые реализуют
IEnumerable, например:IEnumerable<object> a = new object[] { };или
IEnumerable<object> a = new List<object>();
другое решение было бы использовать
Empty.IEnumerable<object> a = Enumerable.Empty<object>();есть нить на так об этом:лучше использовать Enumerable.Пустой() в отличие от нового списка для инициализации IEnumerable?
нет, вы не можете сделать это. Вместо этого используйте следующую строку кода:
IEnumerable<int> usersIds = new List<int>() {1, 2, 3}.AsEnumerable();Я надеюсь, что это помогает.
Я хотел создать новый перечисляемый объект или список и иметь возможность добавлять к нему.
этот комментарий все меняет. Вы не можете добавить в общий
IEnumerable<T>. Если вы хотите остаться с интерфейсами вSystem.Collections.Generic, вам нужно использовать класс, который реализуетICollection<T>какList<T>.
основная причина мы не можем создать объект интерфейса, и интерфейс IEnumerable интерфейс. Нам нужно создать объект класса, который реализует интерфейс. Это основная причина, по которой мы не можем напрямую создать объект IEnumerable.
No IEnumerable-это интерфейс, вы не можете создать экземпляр интерфейса
вы можете сделать что-то подобное
IEnumerable<object> a = new object[0];
Comments