在 C# 4 中将属性设置为 null 的最快方法

本文关键字:null 方法 设置 属性 | 更新日期: 2023-09-27 17:56:15

IEnumerable中设置属性(任何一个)以null的最快方法是什么?foreach是我唯一的选择吗?

在 C# 4 中将属性设置为 null 的最快方法

如果你有一个非常大的列表,你可以考虑并行执行此操作:

enumerable.AsParallel().ForAll(a => a.Value = null);

但值得基准测试和记住的是,您的对象现在需要线程安全。

此处的快速测试显示,当列表大小超过 1000 万个项目*时,投资回报率很高。较低的列表大小和设置并行处理的成本超过了好处。

*您的里程有所不同

有两种方法可以实现您的目标:

  1. 正如你提到的:

    foreach(var item in enumeration)
    {
        item.Property = null;
    }
    
  2. 您也可以使用 LINQ:

    enumeration.ToList().ForEach(item => item.Property = null);
    

虽然第二种方式看起来更短,可读性更好,但它的执行速度可能更慢,因为正如Jeppe Stig Nielsen指出的那样,IEnumerable被转换为List(第一次枚举它),并且该列表再次枚举,最终设置属性。

因此你是对的:foreach是你唯一的选择。无论foreach表示形式的外观如何,您始终需要迭代集合以修改每个项目。