两者有什么区别 添加范围康卡特 通用列表上的函数?是否推荐其中一种?

有帮助吗?

解决方案

它们具有完全不同的语义。

AddRange 通过添加其他项目来修改列表。

Concat 返回包含列表和其他项目的新序列,而不修改列表。

选择具有您想要的语义的任何一个。

其他提示

最大的区别在于 AddRange 会改变调用它的列表,而 Concat 创建一个新列表。因此它们有不同的用途。

Concat 也是一种扩展方法,适用于任何 IEnumerable 并返回 IEnumerable,您需要 .ToList() 才能生成新列表。

如果您想扩展现有列表的内容,请使用 AddRange。

如果要从两个 IEnumerable 源创建新列表,请使用 Concat 和 .ToList。它具有不会改变任何来源的特性。

如果您只需要枚举两个列表(或任何其他 IEnumerable)的内容,那么每次只需使用 Concat,这样做的优点是不需要实际分配新内存来保存统一列表。

我发现这篇有趣的文章讨论了这两种结构之间的差异并比较了它们的性能......

主要思想是,当涉及大尺寸集合时,AddRange 的速度要快得多。

这里是 关联

希望这可以帮助,

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top