2014-01-29 4 views
0

Каждый элемент в aList возвращает либо true, либо false. Я пытаюсь вернуть логическое значение на основе следующих требований:Как вернуть одно логическое значение из набора логических элементов?

Если все элементы aList возвращения верно, я хочу MethodDetails() вернуться true, а также.

Но если какой-либо из элементов внутри aList вернулся false, я хочу, чтобы каждый из этих элементов сохранял возвращаемое значение, но имеет MethodDetails() для возврата false.

public class aClass 
{ 
    bool returnType; 
    private list aList; 
    ArrayList tempList = new ArrayList(); 

    protected override object MethodDetails() 
    { 
     foreach (var element in aList) 
     { 
      MainMethod(); 
      tempList.Add(returnType); 
     } 

     //this is what I tried but it didn't work 
     /*if (tempList.Contains(returnType)) 
     { 
      return false; 
     } 
     else 
     { 
      return returnType; 
     }*/ 
    } 

    private bool MainMethod() 
    { 
     if (File.Exists(aFile) 
     { 
      if (int x != int y) 
      { 
       return false; 
       returnType = false; 
      } 
      else 
      { 
       return true; 
       returnType = true; 
      } 
     } 
     else 
     { 
      return false 
      returnType = false; 
     } 
    } 
} 

ответ

3

Используйте следующие Linq запрос:

return !tempList.OfType<bool>().Any(x => !x); 

Кроме того, рекомендуется использовать List<bool> вместо ArrayList.

Если вы просто хотите, чтобы проверить, если все файлы существуют, это простейшее:

List<string> fileNames = new List<string>();  
return fileNames.All(File.Exists); 
0
//you must add this below your foreach in MethodDetails() 
foreach (var element in tempList) 
    { 
     if(element.Equals(false)) 
      return false; 
    } 

return true; 

Надеется, что это помогает :)

1

Я не думаю, что вы правильно настроить ReturnType. Вы возвращаетесь из MainMethod перед установкой значения returnType. Я думаю, что вы MainMethod должны выглядеть примерно так

private bool MainMethod() 
{ 
    if (File.Exists(aFile) 
    { 
     if (int x != int y) 
     { 
      returnType = false; // Changed 
      return false; 

     } 
     else 
     { 
      returnType = true; // Changed 
      return true; 
     } 
    } 
    else 
    { 
     returnType = false; // Changed 
     return false 
    } 
} 
Смежные вопросы