答案 0 :(得分:103)
他们的语义完全不同。
AddRange通过向其添加其他项来修改列表。
Concat返回一个包含列表和其他项的新序列,而不修改列表。
选择具有所需语义的那个。
答案 1 :(得分:30)
最大的区别在于AddRange会改变调用它的列表,而Concat会创建一个新的List。因此它们有不同的用途。
此外,Concat是一个扩展方法,适用于任何IEnumerable并返回一个IEnumerable,您需要一个.ToList()来生成一个新的List。
如果要扩展现有列表的内容,请使用AddRange。
如果要从两个IEnumerable源创建新列表,请使用带有.ToList的Concat。它的质量不会改变任何一种来源。
如果您只需要枚举两个列表(或任何其他IEnumerable)的内容,那么每次只使用Concat,这样做的好处是不会实际分配新内存来保存统一列表。
答案 2 :(得分:3)