當使用內部嵌套條件的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' –