2015-06-13 2 views
3

Мне нужно проверить неизвестное количество логических элементов .. в зависимости от результата он будет выполнять соответствующую функцию. Вот пример того, что я ищу:Как проверить неизвестное количество булевых C#

if(bool[x] && bool[y] && bool[z] ...) 
    myFunc(); 
+0

Если х, у, г упорядочиваются вы можете сделать это в течение цикла, например. – Sjoerd222888

ответ

4

Вы можете использовать LINQ для этого.

Если вам нужны все Bools, чтобы быть правдой, вы можете использовать Any:

if (bools.All(b => b)) 

Если вам нужно, например, 4 из них в точности, чтобы быть правдой, вы можете использовать Count:

if (bools.Count(b => b) == 4) 

Или, по крайней мере, один, есть Any

if (bools.Any(b => b)) 
+1

Действительно чистый и хороший ответ :) – hdoghmen

0

Что-то вроде этого:

var all=true; 
for (var i=x; i<z; i++) if (!bool[i]) {all=false; break;} 
if (all) myFunc() 

или, если x, y, z не являются последовательными, поместите их в список или массив:

int[] indices = new [] {x, y, z}; 

, а затем итератировать следующим образом:

var all=true; 
foreach (var i in indices) if (!bool[i]) {all=false; break;} 
if (all) myFunc() 
1

Вы можете использовать функцию LINQ All():

var all = bool.All(x=>x == true); 
if(all) 
    myFunc(); 

или просто

var all = bool.All(x=>x); 
if(all) 
    myFunc(); 
0
if (bool.Any(m => !m) 
{ 
    // At least one bool is false 
} 
else 
{ 
    // All bools are true 
} 
0

Используйте Linq, чтобы проверить, что все значения соответствуют предикату.

if(bool.All())

Смежные вопросы