我的任务是维护一些遗留代码.至少在我看来,我的前任对C#非常有经验.但是,我注意到他留下了一些奇怪的代码.以此为例:
Storage.Clients.RemoveAll(x => x == null || x.IsOutdated());
foreach(Client client in Storage.Clients) {
//do something
}
Run Code Online (Sandbox Code Playgroud)
列表已被清除null和过时的客户端,但在我看来,如果这样做会更有效:
for(int i = 0; i < Storage.Clients.Count; i++) {
if(Storage.Clients[i] == null || Storage.Clients[i].IsOutdated())
Storage.Clients.RemoveAt(i);
else
//do something
}
Run Code Online (Sandbox Code Playgroud)
我的理由是,不是迭代两次(一次在RemoveAll中,然后在foreach中),它只迭代一次,可能会使性能翻倍.我在这里错过了什么吗?正如我所说,我的前任经验丰富的事实让我不确定.