2010-10-30 130 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>();