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 写得像方法一样复杂,所以属性也是每次都调用。