在执行此 bool 迭代时,我很想使用不存在的运算符 ||=
,并认为必须有一个更简单或更好的设计来取代它的有效使用(而不是认为它是只是“失踪”):
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/