小心 List.Where 中 Lambda 表达式,性能问题

List<int> list = new List<int>();
list.Add(1);
list.Add(2);
list.Add(3);

// 写法一
var obj = list.Where(m => m == F());

// 写法二
var f = F();
var obj = list.Where(m => m == f);

写法一 F() 会执行 3 次,写法二 F() 只会执行一次。

如果 F() 是返回的固定值,建议采用写法二。

如果 F() 不是方法,是属性,也是一样的道理,因为属性也可以通过 get 写得像方法一样复杂,所以属性也是每次都调用。

你可能感兴趣的