using System.Collections.Concurrent; using System.Collections.Generic; namespace Masuit.Tools.Systems; /// /// 支持null-key和value的字典类型 /// /// /// public class NullableConcurrentDictionary : ConcurrentDictionary, TValue> { public NullableConcurrentDictionary() : base() { } public NullableConcurrentDictionary(int concurrencyLevel, int capacity) : base(concurrencyLevel, capacity) { } public NullableConcurrentDictionary(IEqualityComparer> comparer) : base(comparer) { } public new TValue this[NullObject key] { get => TryGetValue(key, out var value) ? value : default; set => base[key] = value; } /// /// 隐式转换 /// /// public static implicit operator NullableConcurrentDictionary(Dictionary dic) { var nullableDictionary = new NullableConcurrentDictionary(); foreach (var p in dic) { nullableDictionary[p.Key] = p.Value; } return nullableDictionary; } /// /// 隐式转换 /// /// public static implicit operator NullableConcurrentDictionary(ConcurrentDictionary dic) { var nullableDictionary = new NullableConcurrentDictionary(); foreach (var p in dic) { nullableDictionary[p.Key] = p.Value; } return nullableDictionary; } /// /// 隐式转换 /// /// public static implicit operator ConcurrentDictionary(NullableConcurrentDictionary dic) { var newdic = new ConcurrentDictionary(); foreach (var p in dic) { newdic[p.Key] = p.Value; } return newdic; } }