假设我想将我的数据存储为一堆命名列表。
我真的很喜欢 with Dictionary
,你可以这样做:
myDictionary["SomeKey"] = new List<string>{ "SomeString" };
但不幸的是,我不能安全地做到:
myDictionary["SomeKey"].Add("SomeString");
因为如果List
atSomeKey
还没有被初始化,我会得到一个空引用异常。
因此,每次我更改字典中的值时,我都必须这样做:
if (!myDictionary.ContainsKey("SomeKey")) myDictionary["SomeKey"] = new List<string>();
在我可以安全地添加到每个列表之前。它看起来很难看,并且会分散非样板代码的注意力。我还在几个地方重复了代码(SomeKey
当我只想说“将此元素添加到列表中SomeKey
,无论它是否为空”时,多次访问)。
基本上没有理由在我的Dictionary
. 如果它是一个数组List
,我会事先遍历每个元素并初始化每个成员;我不能这样做,Dictionary
因为我事先不知道密钥是什么。
是否有更简洁的语法来表示“访问此键处的值,如果它为空,则对其进行初始化”?