我有这段代码:

Dictionary<string, object> tempDict = new Dictionary<string, object>();

if(xDicionary.TryGetValue(...., out tempDict)
{
tempDict.Add(...);
}
else
{
tempDict.Add(..);
}


如果代码传递给else块,那么我会得到和无法执行添加的异常,因为tempDict指向null。为什么会这样呢?我知道如何通过在else块中分配新的Dictionary来以丑陋的方式绕过它,但是有没有更好的方法呢?

最佳答案

因为具有out参数的方法必须将值分配给out参数。这意味着,当您调用xDicionary.TryGetValue tempDict时,始终会被覆盖,而在未找到任何内容时,它将设置为null。因此,在其他情况下,tempDict始终为null。

09-11 23:54