【发布时间】:2011-01-20 09:31:06
【问题描述】:
我有以下方法:
internal static void removeMethodFromTag(byte p, Method method)
{
Console.WriteLine("Remove method " + method.getName() + " from the tag");
List<Method> outList = new List<Method>();
methodTaggings.TryGetValue(p, out outList);
Console.WriteLine(outList.Count);
outList.Remove(method);
methodTaggings.Remove(p);
methodTaggings.Add(p, outList);
}
这是字典方法标记:
private static Dictionary<byte, List<Method>> methodTaggings = new Dictionary<byte, List<Method>>();
现在我总是在行中得到NullReferenceException
Console.WriteLine(outList.Count);
但我不明白为什么?即使我在字典中没有找到值,列表也不应该为空?
【问题讨论】:
-
我可以告诉你,
outList似乎可能设置为null。 MSDN 说:“如果找到键;否则,为 value 参数类型的默认值。”。列表的默认类型是null。不过不确定。 -
啊,谢谢,我一直以为列表不会只包含任何元素。
-
您可以设置 Visual Studio 以立即在 Throw for NullReferenceException 上中断。然后,您将在导致 NullReferenceException 的行中出现中断并可以进行调试。