【发布时间】:2011-05-04 01:13:07
【问题描述】:
我想要一个字典,它可以为不在字典中的任何键返回指定值,例如:
var dict = new DictWithDefValues("not specified");
dict.Add("bob78", "Smart");
dict.Add("jane17", "Doe");
Assert.AreEqual(dict["xxx"], "not specified");
扩展 System.Collections.Generics.Dictionary 和覆盖 TryGetValue 不起作用,因为 TryGetValue 不是虚拟的。
从头开始重新实现字典(来自 IDictionary)太费力了。
扩展方法不会让我用默认值“初始化”字典。我希望字典的消费者认为钥匙在那里,而不仅仅是dict.GetOrDefault(key, "not specified");
【问题讨论】:
-
我也有同样的情况。我收集了大量的各种业务对象类型。我想通过具有应该返回标准 Func 或特殊情况 Func 的 Func 字典来极端使用策略模式,以防业务对象类型允许它。开闭原则。你最终在这里使用了什么?
-
由于我的字典不大,所以我只填了缺失的条目。
标签: .net dictionary