c# 扩展方法奇思妙用基础篇五:Dictionary<TKey, TValue> 扩展
2021-05-13 08:29
标签:contains 存在 efault 幸好 ora 直接 判断 user get Dictionary 添加键和值使用 Add 方法,但很多时候,我们是不敢轻易添加的,因为 Dictionary 大多时候,我们都会写成以下的样子: 其实,第二种情形可以写如下书写(请参见 http://msdn.microsoft.com/zh-cn/library/9tee9ht2.aspx): 不过好多朋友都会对这种方式表示疑虑,不太确定这样会不会出问题。 不管是上面的哪种写法,用字典时最大的感觉就是担心,怕出异常,因此代码会写的很罗嗦。 我每次用字典时都这样,时间长了,实在是厌烦了,索性扩展一下,用以下两个方法来应对上面两种情形: TryAdd 和 AddOrReplace 这两个方法具有较强自我描述能力,用起来很省心,而且也简单: 或者像 Linq 或 jQuery 一样连起来写: 再来看另外一个问题: 从字典中获取值通常使用如下方式: 使用索引的方式获取前一定先判断,否则不存在时会引发 KeyNotFoundException 异常。 我尤其讨厌第二种方式,因为采用 out 要提前声明一个变量,代码至少要两行,不够简洁。 看下 GetValue 扩展: 使用方便: 一行代码能搞定。 List 相当方便,可怜 Dictionary 使用示例: 为了演示简单,本文中的代码没有考虑线程安全的问题,不宜在实际项目中直接使用! 线程安全请使用 ConcurrentDictionary http://www.cnblogs.com/ldp615/archive/2011/01/28/dictionary-extensions.html 标签:contains 存在 efault 幸好 ora 直接 判断 user get 原文地址:http://www.cnblogs.com/sjqq/p/7554729.html向字典中添加键和值
var dict = new Dictionary
dict[3] = "Orange";
///
dict.TryAdd(2, "Banana");
dict.AddOrReplace(3, "Orange");
dict.TryAdd(1, "A")
.TryAdd(2, "B")
.AddOrReplace(3, "C")
.AddOrReplace(4, "D")
.TryAdd(5, "E");
获取值
string v = "defaultValue";
// 方式一
if (dict.ContainsKey(3)) v = dict[3];
// 方式二
bool isSuccess = dict.TryGetValue(3, out v);
///
var v1 = dict.GetValue(2); //不存在则返回 null
var v2 = dict.GetValue(2, "abc"); //不存在返回 ”abc“
批量添加
List
///
var dict1 = new Dictionary
线程安全:
文章标题:c# 扩展方法奇思妙用基础篇五:Dictionary<TKey, TValue> 扩展
文章链接:http://soscw.com/index.php/essay/85063.html