2017-05-24 7 views
0

다음 행을 반복하고 데이터베이스의 파일을 검색하는 다음 함수가 있습니다. 파일이 데이터베이스에서 발견되지 않으면 함수가 빈 ResultRow를 반환해야하는 경우 저장소에서 null을 반환합니다. if 문 다음에 Assert()가 실행되는 경우도 있습니다. 왜? 어떻게 가능합니까?수익률 반환 후 다음 명령문이 실행되는 이유는 무엇입니까?

IEnumerable<ResultRow> DoRows(SequenceListWithQc list, 
IList<TestSpecification> testSpecs, bool writeResults=false) 
{ 
    foreach (var row in list.Rows) 
    { 
     var result = new ResultRow(); 

     result.FileName = row.Columns[list.Headers.IndexOf("File Name")]; 

     var rawFile = repository.GetRawFileByFilename(result.FileName); 

     if (rawFile == null) 
     { 
      yield return result; 
     } 

     Debug.Assert(rawFile != null); 
    } 
} 
+0

에 다음 행에 이동을 계속 호출 할 수 있습니까? 우리가 다른 루프로 가고 다음 루프에서'rawFile'이'null' 일 수도 있습니다 ... –

+5

'yield return'은 함수에서 돌아 오지 않습니다 * –

+3

코드를 통해 코드를 실행 해 보았습니까? 디버거? – MickyD

답변

2

당신은 바로`yield` 후 루프

if (rawFile == null) 
    { 
     yield return result; 
     continue; 
    }