以下代碼在過去幾個月中僅引發了少數幾次NullReferenceException,但我不完全確定原因。代碼不是我的,但它看起來很直截了當。將項添加到字典中會導致NullReferenceException
Type pageType = page.GetType();
if (_pages.TryGetValue(pageType, out value))
return value;
// The following line throws the exception
return _pages[pageType] = new MyPage(_section.Pages[page]);
[NullReferenceException: Object reference not set to an instance of an object.] System.Collections.Generic.Dictionary
2.Insert(TKey key, TValue value, Boolean add) +210 System.Collections.Generic.Dictionary
2.set_Item(TKey key, TValue value) +11
我能想到的唯一的事情是,當它被用來作爲字典的鍵,但顯然that is not possiblepageType
爲空。
調用它是簡單的代碼:
protected override void OnLoad(EventArgs e)
{
base.OnLoad(e);
_mypage = GetPage();
}
我也認爲該錯誤可能與_section.Pages
,但部分是從來沒有空,不落任何東西。如果.Pages[page]
返回null,則簡單地返回MyPage
構造函數。那麼我錯過了什麼?
您的「MyPage」對象是否覆蓋「GetHashCode」或「Equals」?這些是Dictionary類可能會在您的對象上創建的兩個可能的調用。 – 2011-03-28 16:24:08