2D布尔数组,检查数组是否包含false

时间:2014-02-15 02:18:00

标签: c# arrays

我在C#中使用了一组二维布尔值。我在dot net pearls查找了Array.Exists函数,但我无法使它工作,因为我使用的是布尔值,或者因为它是一个2D数组。

bool[,] array = new bool[4, 4];

if (array.Contains(false)) {}; // This line is pseudo coded to show what I'm looking for

5 个答案:

答案 0 :(得分:6)

不知道这是否正确,但是铸造每个元素似乎都有效:

bool[,] a = new bool[4,4]
    {
        {true, true, true, true},
        {true, true, false, true},
        {true, true, true, true},
        {true, true, true, true},
    };

    if(a.Cast<bool>().Contains(false))
    {
        Console.Write("Contains false");
    }

答案 1 :(得分:5)

试试这个:

if (!a.Cast<bool>().All(b => b))

答案 2 :(得分:3)

var control = array.OfType<bool>().Contains(false);

使用multidimensional数组时,您始终可以使用OfType方法。这非常有用。

答案 3 :(得分:2)

使用LINQ(using System.Linq;OfTypeCast数组扩展允许您测试每个数组元素是否为true,如果不是,则可以用来触发事件。

a[0,0] = false; //Change this to test
if (!a.OfType<bool>().All(x => x))
{
     Console.Write("Contains A False Value");
     //Do Stuff
}
else
{
     Console.Write("Contains All True Values");
}

答案 4 :(得分:1)

试试这样: if (array.ToList().Contains(false))

一般来说,如果不需要效率,那么转换为列表非常有用