2010-10-30 176 views
0

我的模型递归函数

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 

namespace amief.Models 
{ 
    public class WebsiteModels 
{ 
    public static void getPagesForPage(int pageId, dbDataContext db, List<page> myPages) 
    { 

     var pages = (from p in db.pages 
          where p.pageParent == pageId 
          select p); 
     foreach (var item in pages) 
     { 
      myPages.Add(item); 
      getPagesForPage(item.pageId, db, myPages); 
     } 
    } 
} 

} 

调用procudure

List<page> myPages = null; 

WebsiteModels.getPagesForPage(0, db,myPages); 

我得到一个错误

System.NullReferenceException是由用户代码 消息= Object引用未处理未设置为对象的实例。

上线 “myPages.Add(项目);”

我不明白的错误...

回答

0

你将它传递给WebsiteModels.getPagesForPage()之前设置myPagesnull。因此,在循环中调用myPages.Add(item);NullReferenceException因为你不能调用方法null对象。

你可能想:

List<page> myPages = new List<page>(); 
WebsiteModels.getPagesForPage(0, db, myPages); 
+0

当我删除= null。我得到另一个错误:错误使用未分配的局部变量'myPages' – eyalb 2010-10-30 12:28:50

+0

不要删除'= null',这只会让你的变量'unassigned'(但仍然是null)。相反,如上所述实例化新的页面列表。 – 2010-10-30 12:29:56

0

嗯, “myPages” 为空,所以调用它导致我一个NullReferenceException的方法。你应该写

myPages = new List<page>();