c# - 这个 boolean 迭代有什么问题?

标签 c# foreach boolean

在执行此 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/

相关文章:

php - Bootstrap - 如何水平对齐 foreach 内的卡片?

python - 以 boolean 值作为索引的数组切片

java - 设置 boolean 值之前进行控制?

c++ - 为什么 std::foreach 不能与 std::vector<bool> 一起使用?

c# - 框架代码 : Fail silently or throw exceptions

c# - 从收件箱中的文件夹获取邮件 - EWS

c# - 生成随机数的问题

php - basic - PHP/mySQL 中 foreach 循环中每个项目的多个类别

objective-c - UIView.superView (BOOL) == 失败

c# - 类型参数的约束