2013-01-23 4 views
1

ArrayListboolean 값이 포함 된 경우이 Bool 값 시퀀스의 결과를 확인하는 가장 좋은 방법은 무엇입니까? 내가 대신 거짓의 진실한 결과 변수를 선언 할 경우Bool 값을 비교하는 Bool ArrayList의 결과를 어떻게 찾을 수 있습니까?

내가 그러나이

bool result = false;  
bool flag = false; 
ArrayList flags = new ArrayList(); 

if (something > 5) 
{ 
flag = true; 
} 
flags.Add(flag);  

foreach (bool val in flags) 
{ 
     result &= val; 
} 

같은 것을 시도 한 후이 결과를 변경합니다. 나는 약간 혼란 스럽다.

조언을 보내 주시면 감사하겠습니다.

+1

음과 같은

public bool BoolVal(List<bool> list, int n) { if (n == 0)//The condition that limites the method for calling itself return list[n]; return list[n] & BoolVal(list, n - 1); } 

전화를 ...? 물론, 코드를 변경하면 결과는 바뀌지 만 그 결과는 무엇을 기대합니까? – spender

+0

그것은 ArrayList를이 목록에 교체 BETER의 gabba

+1

'myArrayList.Cast () .ALL (X => X) 시퀀스의 모든 bools에 해당하는 경우'당신에게 말할 것이다. 'List '대신'ArrayList'를 사용하는 이유는 무엇입니까? – spender

답변

4

& =을 사용하는 경우 "결과"의 초기 값은 매우 중요합니다. 결과가 false로 시작하면 많은 경우에 & = 결과가 false로 유지됩니다. 결과가 true로 시작하면 & =는 예상대로 동작합니다.

0

먼저 ArrayList 대신 강한 유형 인 List<bool>을 사용해야합니다.

그런 다음 확인 확장을 All 방법을 사용하는 경우 모든 경우 true

List<bool> flags = new List<bool>(); 
... 
bool restul = flags.All(flag => flag); 

또는 : 나는이 것을 제안하지 않을 경우 당신은 LINQ를 사용할 수 있는지

bool restul = !flags.Any(flag => flag); 
+0

감사합니다, 위의 제안에서 내 문제에 비슷한 해결책을 발견, 불행히도 나는 올바른 것으로 답변을 표시하는 데 충분한 명성을 가지고 있지 않습니다 : p – michaalis

0
flags.ToArray().Where(item => (bool)item == true).SingleOrDefault() != null 

이것은 나를 위해 작동 기본값을 false로 설정하고 true를 찾으면 루프를 종료합니다 (결과를 true로 설정 한 후).

foreach (bool val in flags) 
{ 
     if(val) 
     { 
      result = true; 
      break; 
     } 

} 

또한 bools는 ArrayList의 유일한 것입니까 ??

다른 제안 사항도 좋지만 LINQ를 다시 사용하십시오.

1

ArrayList에서 List<bool>으로 변경하고 재귀를 사용하여 시도해보십시오. 여분의 bool 변수는 필요 없다. 당신은 *** 실제로 *** 무엇을하려고

var result = BoolVal(flags, flags.Count -1) 
관련 문제