Gre*_*ech 113
它们具有完全不同的语义.
AddRange通过向其添加其他项来修改列表.
Concat返回包含列表和其他项的新序列,而不修改列表.
选择具有您想要的语义的那个.
Ant*_*nes 32
最大的区别是AddRange会改变调用它的列表,而Concat会创建一个新的List.因此它们有不同的用途.
此外,Concat是一个扩展方法,适用于任何IEnumerable并返回一个IEnumerable,您需要一个.ToList()来生成一个新的List.
如果要扩展现有列表的内容,请使用AddRange.
如果要从两个IEnumerable源创建新列表,请将Concat与.ToList一起使用.它的质量不会改变任何一种来源.
如果您只需要枚举两个列表(或任何其他IEnumerable)的内容,那么每次只使用Concat,这样做的好处是不会实际分配新内存来保存统一列表.
我发现这篇有趣的文章讨论了这两种结构之间的区别并比较了它们的性能...
其主要思想是,AddRange在处理大型集合时要快得多。
这是链接
希望这可以帮助,