检查数组是否包含无效值并返回false
本文关键字:返回 false 无效 数组 是否 包含 检查 | 更新日期: 2023-09-27 17:49:24
这可能很简单,但我想我还没有喝够咖啡。
我有一个有四个值的数组,我想检查它们中是否有无效的,然后设置一个布尔值为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;
}
}
但是如果最后一个不包含invalid, length或bad,那么validDecoding设置为true,但如果一个或多个值无效,我希望它为false。
请帮忙吗?
包含System.Linq
命名空间,您可以执行以下操作:
validDecoding = !arrayOfvalues.Any(
value => value.Contains("invalid") || value.Contains("length") || value.Contains("bad"));
bool validDecoding = false;
foreach (string decodedValue in arrayOfvalues)
{
if (!decodedValue.Contains("invalid") && !decodedValue.Contains("length") && !decodedValue.Contains("bad"))
{
validDecoding = true;
break;
}
}
首先将valid设置为true,如果无效,则在循环中将其设置为false。
bool validDecoding = true;
foreach (string decodedValue in arrayOfvalues)
{
if (decodedValue.Contains("invalid") || decodedValue.Contains("length") || decodedValue.Contains("bad"))
{
validDecoding = false;
break;
}
}
这样就不会被设为true了!(你还需要咖啡;-))
将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
}
}
我喜欢Andrew的回答。如果没有可用的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")
。也许它在您的场景中有效,但它可能会在其他情况下给出错误的否定,并且肯定会使您的代码不那么清晰。您应该仔细检查是否存在更独特/指示性的值,以确保您在这些情况下有一个错误的解码。