在进行此布尔迭代时,我很想使用不存在的运算符||=
,并认为必须有一个更简单或更佳的设计来替换其有效用法(而不是认为它只是“遗漏”):
bool validExtension = false;
foreach (string extension in Plugin.Extensions)
{
validExtension = validExtension || Path.GetExtension(file).Equals(extension.TrimStart('*'), StringComparison.InvariantCultureIgnoreCase);
if (validExtension)
{
break;
}
}
importButton.Enabled = File.Exists(importTextBox.Text) && validExtension;
最佳答案
该循环具有不变性:在进入主体时,validExtension = false
。
因此,主体可以简化为:
if (validExtension = Path.GetExtension(file).Equals(extension.TrimStart('*'), StringComparison.InvariantCultureIgnoreCase))
break;
如果没有这样的不变性,则如果您始终想评估右侧,则可以使用复合赋值运算符
|=
,如果要短路则可以使用if (!lhs) lhs = rhs;
。关于c# - 这个 boolean 迭代有什么问题?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4789158/