如何将单个元素添加到IEnumerable集合中的最佳方法是什么?

8 浏览
0 Comments

如何将单个元素添加到IEnumerable集合中的最佳方法是什么?

我很惊讶地发现似乎没有一种方法可以向IEnumerable集合中添加单个元素。\n如何向IEnumerable集合添加单个元素?

0
0 Comments

问题出现的原因:IEnumerable接口并不是一个只读集合,它只是定义了一个集合如何被迭代的接口。如果想要添加元素,应该将元素添加到具体的集合类中或者使用其他接口。

解决方法:使用具体的集合类或其他接口来添加元素。

0
0 Comments

问题出现的原因是因为IEnumerable是一个只读的拉取式集合,而无法直接添加单个元素。为了解决这个问题,可以使用yield关键字来模拟添加操作。下面是一个示例代码:

public static IEnumerable Add(this IEnumerable source, T additionalItem)
{
   foreach(var item in source)
   {
      yield return item;
   }
   yield return additionalItem;
}

建议将这个方法命名为"Concat",因为它更能传达方法的意图,比起"Add"这个词在处理集合时有着很强的意义。更好的命名可以是"Append",因为Concat感觉像是与某种类似的东西连接在一起,而Add/Append则感觉像是用某个东西补充(尽管Add不太懒)。使用yield关键字在处理可枚举对象时更加自然。

通过使用上述的Add/Concat/Append方法,就可以向IEnumerable集合中添加单个元素了。

0
0 Comments

在.NET中,IEnumerable接口是一个只读集合接口,意味着它不支持添加元素的操作。因此,如果我们需要向一个IEnumerable集合中添加单个元素,我们需要找到一种解决方法。

一种解决方法是使用List类。我们可以通过创建一个新的List对象,并将原始的IEnumerable集合作为参数传递给List的构造函数,然后使用Add方法将新元素添加到List中。最后,我们可以将新的List对象作为结果返回。以下是示例代码:

return new List(enumerable) { new Foo() };

另一种解决方法是使用Concat方法。Concat方法是IEnumerable接口的一个扩展方法,它可以用于将两个集合连接在一起。我们可以使用Concat方法将原始的IEnumerable集合和一个包含新元素的数组连接在一起,并将结果返回。以下是示例代码:

return enumerable.Concat(new[] { new Foo() });

这些解决方法都可以实现向IEnumerable集合中添加单个元素的目的。通过使用List类或Concat方法,我们可以绕过IEnumerable的只读限制,实现修改集合的效果。

0