当使用内部嵌套条件的foreach循环,我曾经写在下面的方法:以ReSharper方式循环嵌套条件的好处是什么?
foreach (RadioButton item in listOfRadioButtons)
{
if (item.IsChecked == true)
{
// sometging
}
}
但我已经安装了ReSharper并提出要改变这种循环以下形式(移除如果和使用Lambda):
foreach (RadioButton item in listOfRadioButtons.Where(item => item.IsChecked == true))
{
// something
}
以我的经验,ReSharper的方式将循环两次:一个生成过滤的IEnumerable,并循环后再次的。哪里查询的结果。
我说得对吗?如果是这样,为什么ReSharper暗示这一点?因为在我看来,第一个也更可靠。
注意:WPF RadioButton的默认IsChecked属性是一个Nullable bool,所以它需要一个== true,.Value或者一个强制转换来返回bool。
显然,JetBrains知道你不知道的东西。 –
http://stackoverflow.com/questions/9072126/linq-foreach-vs-foreach-if :) –
ReSharper不是很好,如果它建议使用'item.IsChecked == true' –