(注意:我已经标记了这个 C#,但我使用的是 Monotouch,所以它的行为可能会有所不同,我不太确定)
这是我的场景: 我有一个在我的应用程序中持续存在的列表,它保存了整个对象列表。然后,我过滤这些数据(通过应用程序中的用户选择)并显示适当的项目。
通过调用网络服务来更新列表,我执行此操作的方式如下:
HandleWebServiceComplete(object sender, ItemRetreivedEventArgs e)
{
// snip - error handling above this
if (e.Result != null)
{
foreach (var item in e.Result)
{
if (!mainList.Contains(item))
mainList.Add(item);
}
RefreshDisplayList(mainList);
}
}
很明显,这会检查网络服务返回的每个项目,以检查它是否已存在于列表中(在某些情况下可能存在) - 所以我的问题是,使用 List.AddRange()
会更好吗之后检查列表中的重复项还是继续我已经要去的方式?
最佳答案
我绝对不会添加范围然后删除重复项,因为每次删除都会触发后备数组的重建。你这样做的方式很好。我认为您目前实际上没有遇到性能问题。
关于c# - 添加范围然后查找重复项或检查每个项目的冲突是否更快?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7335818/