我在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
答案 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;
)OfType
或Cast
数组扩展允许您测试每个数组元素是否为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))
一般来说,如果不需要效率,那么转换为列表非常有用