lagerdalek
问问题
51519 次
3 回答
135
它们具有完全不同的语义。
AddRange 通过将其他项目添加到列表中来修改列表。
Concat 返回一个包含列表和其他项目的新序列,而不修改列表。
选择具有您想要的语义的任何一个。
于 2008-09-19T07:17:46.153 回答
41
最大的区别是它AddRange
改变了调用它的列表,同时Concat
创建了一个新列表。因此它们有不同的用途。
也是Concat
一种扩展方法,适用于任何IEnumerable<T>
并返回IEnumerable<T>
您需要的.ToList()
以生成新列表。
如果要扩展现有列表的内容,请使用AddRange
.
如果您要从两个IEnumerable<T>
来源创建新列表,请使用Concat
with .ToList
。这具有不会改变任何一个来源的质量。
如果您只需要枚举两个列表(或任何其他 IEnumerable)的内容,那么只需Concat
每次都使用,这样做的好处是不会实际分配新内存来保存统一列表。
于 2008-09-19T07:26:23.637 回答
8
于 2019-03-05T09:55:42.260 回答