Dan*_*don 11 .net c# ienumerable
我很惊讶地发现似乎没有一种方法可以将单个元素添加到IEnumerable集合中.
如何将单个元素添加到IEnumerable集合中?
jon*_*nii 24
你无法真正向IEnumerable添加元素,因为它应该是只读的.你最好的选择是:
return new List<Foo>(enumerable){ new Foo() };
Run Code Online (Sandbox Code Playgroud)
要么
return enumerable.Concat(new [] { new Foo() });
Run Code Online (Sandbox Code Playgroud)
BFr*_*ree 20
IEnumerable的观点是它是一个只读拉式样式集合.如果需要,可以通过执行以下操作来模拟添加:
public static IEnumerable<T> Add<T>(this IEnumerable<T> source, T additionalItem)
{
foreach(var item in source)
{
yield return item;
}
yield return additionalItem;
}
Run Code Online (Sandbox Code Playgroud)
我想在这里指出一些其他答案,IEnumerable不是一个只读集合,它根本不是一个集合.它是一个定义如何迭代集合的接口.
如果要添加对象,则应将对象添加到具体集合类中,或者至少使用不同的接口.