Поскольку вы указали, что хотите добавить к нему, то, что вы хотите, это не просто 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).
Так что вы действительно хотите создать экземпляр класса , который реализует интерфейс 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();