将项目插入集合
MyList.Clear();
MyList.InsertRange(MyList.Count, Collection1);
MyList.InsertRange(MyList.Count, Collection2);
MyList.InsertRange(MyList.Count, Collection3);
在上面的代码中,我将3次插入同一个列表,以便按照顺序进行操作。这可以有效地替换吗?
答案 0 :(得分:3)
不确定这是否更有效:
MyList.AddRange(Collection1.Concat(Collection2).Concat(Collection3));
如果集合很大,如果你在前面添加这一行,它可能会更有效:
MyList = new List<string>(Collection1.Count + Collection2.Count + Collection3.Count);
(假设它是List<string>
)
答案 1 :(得分:0)
更高效?我不这么认为。您有三个不同的列表需要添加。添加它们时,每个都将被迭代。您可以使语法更紧凑,但在幕后,它们仍将在三个集合中进行迭代。
答案 2 :(得分:0)
正如Tim所说,这两种方法看起来效率更高,但如果要添加许多不同的集合,我更倾向于使用InsertRange的原始方法来提高代码的可读性。
对于InsertRange和AddRange,请确保所有集合都不为null,否则您将获得异常。
答案 3 :(得分:0)
如果您Collection1,2,3
的任何人正在实施ICollection<T>
(例如List<T>
或T[]
),那么您的方法是最佳的。如果它们都只是IEnumerable<T>
那么它并不重要 - 你的或单个AddRange与连接集合。