我有這樣一段代碼:爲什麼TryGetValue取消分配我的字典?
Dictionary<string, object> tempDict = new Dictionary<string, object>();
if(xDicionary.TryGetValue(...., out tempDict)
{
tempDict.Add(...);
}
else
{
tempDict.Add(..);
}
如果代碼傳遞到其他塊,然後我和異常不能進行補充,因爲tempDict點爲空。這是爲什麼發生?我知道如何通過在else塊中分配新詞典以醜陋的方式繞過它,但是有沒有更好的方法來做到這一點?
按設計。 TryGetValue()失敗,因此tempDict爲null。重新思考你的邏輯。 –
雖然它將'out'參數設置爲'null',但它並未解除分配。 – delnan
反正你不想要這個設計。你只想在你發現沒有的時候實例化新的字典,也就是在else子句中,否則只有在字典中已經存在的時候纔會浪費資源。 – jnm2