簡體   English   中英

HashTable .Net空實例的異常

[英]HashTable .Net exception of null instance

我正在使用.Net 2.0,但是遇到了一個奇怪的錯誤:

我有一個哈希表,使用字符串作為鍵,並使用一個類(名為Market)作為值。 該類包含4個整數和1個字節。 整數之一代表我需要增加的計數器。

我在哈希表中只有一個元素。 關鍵是"Tomo"

我這樣做:

string strM = "Tomo"
MarketPlace mkt = (MarketPlace)mHash[strM];
mkt.nCter++;

在最后一行中,我得到了一個空引用異常,即使使用調試器,我也可以看到哈希表包含該實例。 這段代碼在一周前運行良好。

找到執行以下操作之一的位置:

mHash[strM] = mkt;
mHash.Add(strM, mkt);

在該位置, mktnull

編輯:這是基於以下事實:您聲明已驗證Hashtable包含密鑰。 如果實際上Hashtable 包含密鑰,則適用以下規則:

如果找不到指定的密鑰,則嘗試獲取它會返回null

由於您使用的是.NET 2.0,因此我建議使用Dictionary<string, Market>而不是HashTable。 它將提供類型安全性,並可能幫助您了解在這種情況下為什么會遇到此問題。

您確定不只是在查看哈希表中的值為空的鍵嗎?

例如,這有效:

mHash["Tomo"] = null;
Market value = (Market)mHash["Tomo"];
value.nCounter++; // NullReferenceException

也許您向后添加了實例。

mHash.Add(instance, "Tomo")

代替

mHash.Add("Tomo", instance)

因此,當您在調試器中時,它可能看起來像已列出,但鍵實際上是實例,而“ Tomo”是對象值。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM