2011-12-30 2 views
1

각 웹 및 해당 웹을 반복하여 하위 웹 목록을 얻으려고합니다.하지만 문제는 반복 웹에 하위 웹이없는 웹에있을 때입니다. 그것은 == 내가 심지어 "만약 (TopLevelWeb.Webs.Counts을 시도논리 오류 foreach Web.webs

private void dwnEachWeb(SPWeb TopLevelWeb) 
    { 
     if (TopLevelWeb.Webs != null) 
     { 
      dwnEachList(TopLevelWeb); 
     } 
     foreach (SPWeb ChildWeb in TopLevelWeb.Webs) 
     { 
      dwnEachWeb(ChildWeb); 
      ChildWeb.Dispose(); 
     } 
    } 

여기에 예외를 대상

코드의 인스턴스로 설정되지

객체 참조를 제공합니다 0 ")"문제는, 하위 웹이 없을 때 프로그램이 0 또는 null인지 확인하는 방법입니다. 웹에 웹을 가지고 있는지 확인할 수있는 방법이 있는지 궁금합니다. 웹 존재 여부.

답변

1

TopLevelWeb.Webs이 null로 평가되면 Null 참조 예외가 발생합니다. 그래서 시도 :

private void dwnEachWeb(SPWeb TopLevelWeb) 
{ 
    if (TopLevelWeb != null && TopLevelWeb.Webs != null) 
    { 
     dwnEachList(TopLevelWeb); 

     foreach (SPWeb ChildWeb in TopLevelWeb.Webs) 
     { 
      dwnEachWeb(ChildWeb); 
      ChildWeb.Dispose(); 
     } 
    } 
} 

이는 않습니다 TopLevelWebTopLevelWeb.Webs가 null되지 않습니다 foreach합니다.

+0

나는 한 번에 TopLevelWeb이 null이 될 때까지 예외를 제공하려고 시도했다. (i debugged) –

+0

가드 절을 추가한다. 내 대답을 편집 할 것이다. –

+0

완료, 지금까지 좋은 작업, 건배 –