在 C# 4 中将属性设置为 null 的最快方法
本文关键字:null 方法 设置 属性 | 更新日期: 2023-09-27 17:56:15
在IEnumerable
中设置属性(任何一个)以null
的最快方法是什么?foreach
是我唯一的选择吗?
如果你有一个非常大的列表,你可以考虑并行执行此操作:
enumerable.AsParallel().ForAll(a => a.Value = null);
但值得基准测试和记住的是,您的对象现在需要线程安全。
此处的快速测试显示,当列表大小超过 1000 万个项目*时,投资回报率很高。较低的列表大小和设置并行处理的成本超过了好处。
*您的里程会有所不同
有两种方法可以实现您的目标:
-
正如你提到的:
foreach(var item in enumeration) { item.Property = null; }
-
您也可以使用 LINQ:
enumeration.ToList().ForEach(item => item.Property = null);
虽然第二种方式看起来更短,可读性更好,但它的执行速度可能更慢,因为正如Jeppe Stig Nielsen指出的那样,IEnumerable
被转换为List
(第一次枚举它),并且该列表再次枚举,最终设置属性。
因此你是对的:foreach
是你唯一的选择。无论foreach
表示形式的外观如何,您始终需要迭代集合以修改每个项目。