检查数组是否包含无效值并返回false?

时间:2011-04-06 00:45:47

标签: c#

这可能很简单,但我想我的咖啡还不够。

我有一个包含四个值的数组,我想检查它们是否有效,然后将布尔值设置为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。

请帮帮忙?

提前致谢。

5 个答案:

答案 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")保持警惕。也许它适用于您的场景,但它可能会给其他情况带来误报,并且肯定会使您的代码不那么清晰。您应该仔细检查是否没有更多唯一/指示性值来确保您对这些情况进行错误解码。