C# 每个Web.webs的逻辑错误

C# 每个Web.webs的逻辑错误,c#,.net,sharepoint,sharepoint-2007,spweb,C#,.net,Sharepoint,Sharepoint 2007,Spweb,我试图遍历每个web及其web,以获得子web的列表等等,但问题是,当迭代涉及到一个没有任何子web的web时,它会给出一个异常 对象引用未设置为对象的实例 代码在这里 private void dwnEachWeb(SPWeb TopLevelWeb) { if (TopLevelWeb.Webs != null) { dwnEachList(TopLevelWeb); } foreach (S

我试图遍历每个web及其web,以获得子web的列表等等,但问题是,当迭代涉及到一个没有任何子web的web时,它会给出一个异常

对象引用未设置为对象的实例

代码在这里

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

我甚至尝试过“if(TopLevelWeb.Webs.Counts==0)”,但问题是,当没有子网站时,程序将如何检查其是否为零或空,我想知道是否有任何方法可以检查网站是否有网站集合,比如我是否可以检查web.webs是否存在。

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();
        }
    }
}

只有当
TopLevelWeb
TopLevelWeb.Webs
不为空时,
foreach
才会执行此操作。

TopLevelWeb.Webs
的计算结果为空时,您将得到空引用异常。因此,请尝试:

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

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

只有当
TopLevelWeb
TopLevelWeb.Webs
不为空时,才会执行
foreach

我尝试了它,但仍然给出了一个异常,因为TopLevelWeb在某一点上变为空。。(我调试了它)我尝试了它,但仍然给出了一个异常,因为在某一点上,TopLevelWeb变为空。。(我调试过)