2
假設我想將我的數據存儲爲一堆命名列表。我可以自動初始化字典值嗎?
我真的很喜歡如何與Dictionary
,你可以這樣做:
myDictionary["SomeKey"] = new List<string>{ "SomeString" };
但不幸的是,我不能做安全:
myDictionary["SomeKey"].Add("SomeString");
因爲如果List
在SomeKey
尚未初始化,我會得到一個空引用異常。
所以每次我改變在字典中的價值,我必須做的:
if (!myDictionary.ContainsKey("SomeKey")) myDictionary["SomeKey"] = new List<string>();
之前,我可以放心地添加到每個列表。它看起來很醜並且分散了非模板代碼。我也在幾個地方複製代碼(當我想說的時候,多次訪問SomeKey
是「將此元素添加到列表SomeKey
,無論它是否爲空」)。
基本上沒有理由爲什麼我想在我的Dictionary
中未初始化的值。如果它是一個List
的數組,我會預先遍歷每個元素並初始化每個成員;我不能用Dictionary
這樣做,因爲我不知道密鑰會提前。
是否有一個更簡潔的語法來說:「在這個鍵上訪問這個鍵的值,如果它是空的,然後初始化它」?
是否有可能延長'這個[關鍵]'索引檢查請求的值爲null? – Superbest
當我嘗試創建子類時,索引器看起來並不是虛擬的,但是您可以始終創建您自己的IDictionary>的實現,並按照您的需要進行更多操作。 –
Paul