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;
}
}