我使用的是.Net 2.0,我遇到了一个奇怪的错误:
我有一个哈希表,使用string作为键,使用一个类(名为Market)作为值。该类包含4个整数和1个字节。其中一个整数表示我需要递增的计数器。
我在哈希表中只有一个元素。它的关键是"Tomo"。
我这样做:
string strM = "Tomo"
MarketPlace mkt = (MarketPlace)mHash[strM];
mkt.nCter++;在最后一行中,我得到了一个空引用异常,即使使用调试器,我也可以看到哈希表包含该实例。这段代码一周前还运行得很好。
发布于 2009-08-13 21:22:33
找到执行以下操作之一的位置:
mHash[strM] = mkt;
mHash.Add(strM, mkt);在该位置,mkt是null。
编辑:这是基于您声明您验证了Hashtable包含密钥的事实。如果Hashtable实际上不包含密钥,则适用以下情况:
如果找不到指定的键,则返回
。
发布于 2009-08-13 21:22:54
由于您使用的是.NET 2.0,因此我建议您使用Dictionary<string, Market>而不是HashTable。它将提供类型安全,并可能帮助您认识到为什么在这种情况下会出现问题。
发布于 2009-08-13 21:25:04
您确定您不是在查看Hashtable中的键,其中的值为空吗?
例如,这是可行的:
mHash["Tomo"] = null;
Market value = (Market)mHash["Tomo"];
value.nCounter++; // NullReferenceExceptionhttps://stackoverflow.com/questions/1274643
复制相似问题