c# - 排序列表和重复的键
问题描述
我正在使用SortedList<TKey, TValue>集合。我发现自己经常这样做:
if (!sortedList.ContainsKey(key))
{
sortedList.Add(key, value);
}
只是为了避免“重复键”异常。我不喜欢这样,代码可读性受到惩罚。显然,我不需要重复的键。
是否有任何选项或不同的集合类型有助于跳过此检查?
解决方案
如果您想在密钥已经存在的情况下保留旧值(这是您当前代码所做的),那么首先检查是唯一的选择。然而,为了简化事情,我们可以创建一个包装检查的扩展方法。
下面是一个示例,它返回一个bool
指示是否添加了新值:
public static class Extensions
{
public static bool AddIfMissing<TKey, TValue>(
this SortedList<TKey, TValue> list, TKey key, TValue value)
{
if (list.ContainsKey(key)) return false;
list.Add(key, value);
return true;
}
}
现在当我们想要添加一个值时,我们不必每次都编写检查键的代码,我们只需编写:
sortedList.AddIfMissing(key, value);
推荐阅读
- flutter - How can I convert an Image selected from my gallery or camera snapshot from my flutter app to base64, display it before I persist to database
- java - 如何检查二维数组中的2个元素是否彼此相邻
- flutter - 如果对象不在数组中,则添加到数组
- python - 为什么 DOM 元素不显示给 selenium webdriver?
- c++ - 如何在对象数组上使用插入排序?
- excel - Excel Power Pivot 查找
- javascript - 在事件中使用客户端与事件处理程序和 ...args | Discord.js@13
- python - Pyspark: TypeError: int is required...得到类型列
- python - 在表单中获取实例的 id 并保存在其中
- python - for 循环中的两个 if 不适用于 FizzBuzz