gpt4 book ai didi

c# - 如何将项目添加到 IEnumerable 集合?

转载 作者:IT王子 更新时间:2023-10-29 03:27:49 24 4
gpt4 key购买 nike

我的问题如上标题。例如

IEnumerable<T> items = new T[]{new T("msg")};
items.ToList().Add(new T("msg2"));

但毕竟里面只有一件元素。我们可以有一个类似 items.Add(item) 的方法吗?喜欢 List<T>

最佳答案

你不能,因为IEnumerable<T>不一定代表可以添加项目的集合。事实上,它根本不代表一个集合!例如:

IEnumerable<string> ReadLines()
{
string s;
do
{
s = Console.ReadLine();
yield return s;
} while (!string.IsNullOrEmpty(s));
}

IEnumerable<string> lines = ReadLines();
lines.Add("foo") // so what is this supposed to do??

然而,您可以做的是创建一个 IEnumerable对象(未指定类型),枚举时,将提供旧对象的所有项目以及您自己的一些项目。您使用 Enumerable.Concat为此:

 items = items.Concat(new[] { "foo" });

不会更改数组对象(无论如何,您不能将项目插入到数组中)。但它会创建一个新对象,列出数组中的所有项目,然后是“Foo”。此外,该新对象将跟踪数组中的变化(即无论何时枚举它,您都会看到项目的当前值)。

关于c# - 如何将项目添加到 IEnumerable<T> 集合?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1210295/

24 4 0