我有这段代码:
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。