gpt4 book ai didi

c# - 是更好地处理每个列表元素还是找到您要首先处理的元素?

转载 作者:太空宇宙 更新时间:2023-11-03 17:56:09 25 4
gpt4 key购买 nike

我有一个列表:List<MyClass> MyList = new List<MyClass>();

MyClass具有方法SetBoolIsTrue。我必须将此列表的每个对象设置为false(obj.SetBool(false))。

有两种可能的方法:

第一:

foreach (MyClass obj in MyList)
{
obj.SetBool(false)
}


第二:

List<MyClass> MyList2 = MyList.Where(c => c.IsTrue()).ToList();

foreach (MyClass obj in MyList2)
{
obj.SetBool(false)
}


如果我使用第一个,它可能会变慢,因为它会更改每个元素。第二种方法也可能很慢,因为它必须先找到对象。

所以我的问题是:
哪一个会更快(我的列表中可能有很多元素),为什么?

最佳答案

最快的组合是:

foreach (MyClass obj in MyList)
{
if (obj.IsTrue())
obj.SetBool(false)
}


但是,只有当 SetBool()进行一些广泛的验证或计算时,与第一个版本的区别才有意义,并且比 Istrue()昂贵得多。

关于c# - 是更好地处理每个列表元素还是找到您要首先处理的元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10720344/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com