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

时间:2013-01-28 15:23:33

标签: c# ienumerable

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

2 个答案:

答案 0 :(得分:7)

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

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

但是值得基准测试并考虑到你的对象现在需要线程安全。

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

*您的里程 会改变

答案 1 :(得分:1)

实现目标有两种方法:

  1. 如你所说:

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

    enumeration.ToList().ForEach(item => item.Property = null);
    
  3. 虽然第二种方式看起来更短且更易读,但它可能执行得更慢,因为正如Jeppe Stig Nielsen指出的那样,IEnumerable被转换为List(第一次枚举)并且该列表再次枚举,最终设置属性。

    因此你是对的:foreach是你唯一的选择。但是foreach - 表示看起来像,你总是需要遍历集合来修改每个项目。