IEnumerable <object> a = new IEnumerable <object>(); 我可以这样做吗?
IEnumerable<object> a = new IEnumerable<object>();  我可以这样做吗? 我只想创build一个新的对象实例。 IEnumerable<object> 
 你可以例如创build一个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>而是至less一个ICollection<T> 。 我build议使用像这样的List<T> : 
 List<object> myList=new List<object>(); myList.Add(1); myList.Add(2); myList.Add(3); 
 因为List<object>实现了IEnumerable<object> ,所以可以使用myList遍及IEnumerable<object> 。 
(澄清前的旧答案)
 您不能创build一个IEnumerable<T>的实例,因为它是一个普通的接口(有时可能指定一个默认实现,但通常只用于COM)。 
 所以你真正想要的是实例化一个实现接口 IEnumerable<T> 。 行为取决于您select的类别。 
对于空序列使用:
 IEnumerable<object> e0=Enumerable.Empty<object>(); 
 对于非空的枚举,可以使用一些实现IEnumerable<T>集合。 常见的select是数组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是一个接口。 
 您应该能够创build一个实现IEnumerable的大多数非接口types的空实例,例如: – 
 IEnumerable<object> a = new object[] { }; 
要么
 IEnumerable<object> a = new List<object>(); 
 另一个解决scheme是使用Empty 。 
 IEnumerable<object> a = Enumerable.Empty<object>(); 
有关于它的一个线程:它是更好的使用Enumerable.Empty()而不是新的List来初始化一个IEnumerable?
不,你不能这样做。 改用下面这行代码:
 IEnumerable<int> usersIds = new List<int>() {1, 2, 3}.AsEnumerable(); 
我希望它有帮助。
我想创build一个新的枚举对象或列表,并能够添加到它。
 这个评论改变了一切。 您不能添加到通用的IEnumerable<T> 。 如果你想留在System.Collections.Generic的接口,你需要使用一个实现ICollection<T>类如List<T> 。 
主要原因是我们不能创build一个接口的对象,IEnumerable是一个接口 。 我们需要创build实现接口的类的对象。 这是我们无法直接创buildIEnumerable对象的主要原因。
没有IEnumerable是一个接口,你不能创build接口的实例
你可以做这样的事情
 IEnumerable<object> a = new object[0];