我想创建一个对象的新实例 IEnumerable<object>
我可以这样做吗?
IEnumerable<object> a = new IEnumerable<object>();
我想创建一个对象的新实例 IEnumerable<object>
我可以这样做吗?
IEnumerable<object> a = new IEnumerable<object>();
IEnumerable<T>。您必须使用List<T>。
IEnumerable<T>它不表示迭代器-它表示可迭代的序列。IEnumerator<T>本身代表迭代器。
Answers:
例如,您可以创建一个实例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>是IMO的一个好主意。
由于您现在已指定要添加到其中,因此所需的不是简单的,IEnumerable<T>而是至少一个ICollection<T>。我建议简单地使用List<T>如下所示:
List<object> myList=new List<object>();
myList.Add(1);
myList.Add(2);
myList.Add(3);
您可以在IEnumerable<object>期望的任何地方使用myList ,因为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();
不,你不能那样做。请使用以下代码行:
IEnumerable<int> usersIds = new List<int>() {1, 2, 3}.AsEnumerable();
希望对您有所帮助。
没有IEnumerable是一个接口,您不能创建该接口的实例
你可以做这样的事情
IEnumerable<object> a = new object[0];
new SomeComInterface()实例化接口的关联“ CoClass”,而不是实例化接口本身,是否更准确?
new在某些情况下您可以使用接口。