这可能很简单,但我想我的咖啡还不够。
我有一个包含四个值的数组,我想检查它们是否有效,然后将布尔值设置为false,否则设置为true。
bool validDecoding = false;
foreach (string decodedValue in arrayOfvalues)
{
if (decodedValue.Contains("invalid") || decodedValue.Contains("length") || decodedValue.Contains("bad"))
{
validDecoding = false;
}
else
{
validDecoding = true;
}
}
但如果最后一个不包含无效,长度或错误,则validDecoding设置为true,但如果一个或多个值无效,我希望它为false。
请帮帮忙?
提前致谢。
答案 0 :(得分:6)
包含System.Linq
命名空间,您可以执行以下操作:
validDecoding = !arrayOfvalues.Any(
value => value.Contains("invalid") || value.Contains("length") || value.Contains("bad"));
答案 1 :(得分:1)
首先将valid设置为true,然后在循环中将其设置为false(如果它无效)。
bool validDecoding = true;
foreach (string decodedValue in arrayOfvalues)
{
if (decodedValue.Contains("invalid") || decodedValue.Contains("length") || decodedValue.Contains("bad"))
{
validDecoding = false;
break;
}
}
这样它永远不会回归真实! (你需要更多咖啡;-))
答案 2 :(得分:1)
bool validDecoding = false;
foreach (string decodedValue in arrayOfvalues)
{
if (!decodedValue.Contains("invalid") && !decodedValue.Contains("length") && !decodedValue.Contains("bad"))
{
validDecoding = true;
break;
}
}
答案 3 :(得分:0)
最初将validDecoding设置为'true',并且只有在它中断时才会重置为false。
bool validDecoding = true;
foreach (string decodedValue in arrayOfvalues)
{
if (decodedValue.Contains("invalid") || decodedValue.Contains("length") || decodedValue.Contains("bad"))
{
validDecoding = false;
}
else
{
//Do Nothing
}
}
答案 4 :(得分:0)
我喜欢安德鲁的回答。如果您没有Linq,请尝试以下选项:
// Note: Name boolean variables like they are a question
bool isValidDecoding = true;
foreach (string decodedValue in arrayOfvalues)
{
isValidDecoding &= !decodedValue.Contains("invalid")
&& !decodedValue.Contains("length")
&& !decodedValue.Contains("bad");
}
当您的测试包含日志记录时,我特别喜欢此选项,并且您希望在终止之前找到所有失败。
但我会对decodedValue.Contains("length")
保持警惕。也许它适用于您的场景,但它可能会给其他情况带来误报,并且肯定会使您的代码不那么清晰。您应该仔细检查是否没有更多唯一/指示性值来确保您对这些情况进行错误解码。