Class LazyConcurrentDictionary<TKey, TValue>
Namespace: Tool.Utils.Data
Assembly: Tool.Net.dll
完全保证的多线程延迟加载字典,表示可由多个线程同时访问的键/值对的线程安全集合。
public class LazyConcurrentDictionary<TKey, TValue> : IDictionary<TKey, TValue>, ICollection<KeyValuePair<TKey, TValue>>, IEnumerable<KeyValuePair<TKey, TValue>>, IEnumerableType Parameters
TKey
字典中的键的类型。
TValue
字典中的值的类型。
Inheritance
object ← LazyConcurrentDictionary<TKey, TValue>
Implements
IDictionary<TKey, TValue>, ICollection<KeyValuePair<TKey, TValue>>, IEnumerable<KeyValuePair<TKey, TValue>>, IEnumerable
Inherited Members
object.Equals(object?), object.Equals(object?, object?), object.GetHashCode(), object.GetType(), object.MemberwiseClone(), object.ReferenceEquals(object?, object?), object.ToString()
Extension Methods
ObjectExtension.Add<T>(object, object, object), DictionaryExtension.AsReadOnly<TKey, TValue>(IDictionary<TKey, TValue>), ObjectExtension.CopyEntity(object, object, params string[]), ObjectExtension.EntityToJson(object), ObjectExtension.EntityToJson(object, bool), ObjectExtension.EntityToJson(object, bool, string), DictionaryExtension.GetDictionary(object), TypeExtension.GetFieldKey(object, string, out bool), TypeExtension.GetFieldKey<T>(object, string, out bool), TypeExtension.GetFieldKey(object, Type, string, out bool), ObjectExtension.GetIntPtr(object), ObjectExtension.GetIntPtrInt(object), TypeExtension.GetPropertieFind(object, string, bool), TypeExtension.GetProperties(object), TypeExtension.GetPropertyKey(object, string, out bool), TypeExtension.GetPropertyKey<T>(object, string, out bool), TypeExtension.GetPropertyKey(object, Type, string, out bool), TypeExtension.GetValue(object, PropertyDescriptor), TypeExtension.GetValue(object, string, bool), TypeExtension.GetValue(object, string), DictionaryExtension.NewDictionary<TKey, TValue>(IDictionary<TKey, TValue>), ObjectExtension.Read<T>(object, object, int, int), ObjectExtension.Read<T>(object, int, object, int, int), DictionaryExtension.Remove<TKey, TValue>(IDictionary<TKey, TValue>, params TKey[]), DictionaryExtension.SetDictionary(object, IDictionary<string, object>), TypeExtension.SetFieldKey(object, string, object), TypeExtension.SetFieldKey<T>(object, string, object), TypeExtension.SetFieldKey(object, Type, string, object), TypeExtension.SetPropertyKey(object, string, object), TypeExtension.SetPropertyKey<T>(object, string, object), TypeExtension.SetPropertyKey(object, Type, string, object), TypeExtension.SetValue(object, PropertyDescriptor, object), TypeExtension.SetValue(object, string, object, bool), TypeExtension.SetValue(object, string, object), ObjectExtension.ToBase64String(object), ObjectExtension.ToBytes(object), ObjectExtension.ToBytes(object, out Type), DictionaryExtension.ToDictionary(object), DictionaryExtension.ToDictionary<T>(object), DictionaryExtension.ToIDictionary(object), DictionaryExtension.ToIDictionary<T>(object), ObjectExtension.ToJson(object), ObjectExtension.ToJson(object, JsonSerializerOptions), ObjectExtension.ToJsonWeb(object), ObjectExtension.ToJsonWeb(object, Action<JsonSerializerOptions>), ObjectExtension.ToTryVar<T>(object, T), ObjectExtension.ToVar<T>(object), ObjectExtension.ToVar(object, Type, bool), ObjectExtension.ToVar(object, string), ObjectExtension.ToXml(object), DictionaryExtension.TryRemove<TKey, TValue>(IDictionary<TKey, TValue>, out TKey[], params TKey[])
Remarks
代码由逆血提供支持
Constructors
LazyConcurrentDictionary()
初始化
public LazyConcurrentDictionary()Properties
Count
获取包含在 中的键/值对的数目。
public int Count { get; }Property Value
Exceptions
字典已包含最大数目的元素 (System.Int32.MaxValue)。
IsEmpty
获取一个指示 是否为空的值。
public bool IsEmpty { get; }Property Value
IsReadOnly
获取一个值,该值指示 是否为只读。(无效参数)
public bool IsReadOnly { get; }Property Value
Keys
获取包含 中的键的集合。
public ICollection<TKey> Keys { get; }Property Value
ICollection<TKey>
Values
获取包含 中的值的集合。 (作者并不建议使用该字段,开销有点大)
public ICollection<TValue> Values { get; }Property Value
ICollection<TValue>
this[TKey]
获取或设置与指定的键相关联的值。
public TValue this[TKey key] { get; set; }Property Value
TValue
Exceptions
key 为 null。
已检索该属性,并且集合中不存在 key。
Methods
Add(TKey, TValue)
在 中添加一个带有所提供的键和值的元素。
public void Add(TKey key, TValue value)Parameters
key TKey
用作要添加的元素的键的对象。
value TValue
作为要添加的元素的值的对象。
Add(KeyValuePair<TKey, TValue>)
在 中添加一个带有所提供的键和值的元素。
public void Add(KeyValuePair<TKey, TValue> item)Parameters
item KeyValuePair<TKey, TValue>
单个对象的键值对
AddOrUpdate(TKey, TValue, Func<TKey, TValue, TValue>)
使用指定的函数将键/值对添加到 如果密钥已经存在,更新系统中的密钥/值对。如果密钥不存在 则添加进去。
public TValue AddOrUpdate(TKey key, TValue addValue, Func<TKey, TValue, TValue> updateValueFactory)Parameters
key TKey
元素的键
addValue TValue
新增的内容
updateValueFactory Func<TKey, TValue, TValue>
修改的内容委托
Returns
TValue
返回值
AddOrUpdate(TKey, Func<TKey, TValue>, Func<TKey, TValue, TValue>)
使用指定的函数将键/值对添加到 如果密钥已经存在,更新系统中的密钥/值对。如果密钥不存在 则添加进去。
public TValue AddOrUpdate(TKey key, Func<TKey, TValue> addValueFactory, Func<TKey, TValue, TValue> updateValueFactory)Parameters
key TKey
元素的键
addValueFactory Func<TKey, TValue>
新增的内容委托
updateValueFactory Func<TKey, TValue, TValue>
修改的内容委托
Returns
TValue
返回值
AddOrUpdate<TArg>(TKey, Func<TKey, TArg, TValue>, Func<TKey, TValue, TArg, TValue>, TArg)
使用指定的函数将键/值对添加到 如果密钥已经存在,更新系统中的密钥/值对。如果密钥不存在 则添加进去。
public TValue AddOrUpdate<TArg>(TKey key, Func<TKey, TArg, TValue> addValueFactory, Func<TKey, TValue, TArg, TValue> updateValueFactory, TArg factoryArgument)Parameters
key TKey
元素的键
addValueFactory Func<TKey, TArg, TValue>
新增的内容委托
updateValueFactory Func<TKey, TValue, TArg, TValue>
修改的内容委托
factoryArgument TArg
传入的额外对象
Returns
TValue
返回值
Type Parameters
TArg
Clear()
从 中移除所有的键和值。
public void Clear()ContainsKey(TKey)
确定 是否包含指定的键。
public bool ContainsKey(TKey key)Parameters
key TKey
要在 中定位的键。
Returns
如果 包含具有指定键的元素,则为 true;否则为 false。
Exceptions
key 为 null。
GetEnumerator()
返回循环访问 的枚举数。
public IEnumerator<KeyValuePair<TKey, TValue>> GetEnumerator()Returns
IEnumerator<KeyValuePair<TKey, TValue>>
的一个枚举数。GetOrAdd(TKey, Func<TKey, TValue>)
如果该键尚不存在,则使用指定函数将键/值对添加到
public TValue GetOrAdd(TKey key, Func<TKey, TValue> valueFactory)Parameters
key TKey
要添加的元素的键。
valueFactory Func<TKey, TValue>
用于为键生成值的函数
Returns
TValue
键的值。 如果字典中已存在指定的键,则为该键的现有值;如果字典中不存在指定的键,则为 valueFactory 返回的键的新值。
Exceptions
valueFactory 为 null。
字典已包含最大数目的元素 (System.Int32.MaxValue)。
GetOrAdd(TKey, TValue)
如果该键尚不存在,则使用指定函数将键/值对添加到
public TValue GetOrAdd(TKey key, TValue value)Parameters
key TKey
要添加的元素的键。
value TValue
用于为键生成值的函数
Returns
TValue
键的值。 如果字典中已存在指定的键,则为该键的现有值;如果字典中不存在指定的键,则为新值。
Exceptions
value 为 null。
字典已包含最大数目的元素 (System.Int32.MaxValue)。
Remove(TKey)
尝试从 中移除。
public bool Remove(TKey key)Parameters
key TKey
要移除并返回的元素的键。
Returns
如果已成功移除对象,则为 true;否则为 false。
ToString()
显示结果
public override string ToString()Returns
TryAdd(TKey, TValue)
在 中添加一个带有所提供的键和值的元素。
public bool TryAdd(TKey key, TValue value)Parameters
key TKey
用作要添加的元素的键的对象。
value TValue
作为要添加的元素的值的对象。
Returns
如果该键/值对已成功添加到 ,则为 true;如果该键已存在,则为 false。
Exceptions
value 为 null。
字典已包含最大数目的元素 (System.Int32.MaxValue)。
TryAdd(TKey, Func<TKey, TValue>)
在 中添加一个带有所提供的键和值的元素。
public bool TryAdd(TKey key, Func<TKey, TValue> addValueFactory)Parameters
key TKey
用作要添加的元素的键的对象。
addValueFactory Func<TKey, TValue>
作为要添加的元素的值的委托。
Returns
如果该键/值对已成功添加到 ,则为 true;如果该键已存在,则为 false。
Exceptions
value 为 null。
字典已包含最大数目的元素 (System.Int32.MaxValue)。
TryGetValue(TKey, out TValue)
尝试从 获取与指定的键关联的值。
public bool TryGetValue(TKey key, out TValue value)Parameters
key TKey
要获取的值的键。
value TValue
当此方法返回时,将包含 中具有指定键的对象;如果操作失败,则包含默认值。
Returns
如果在 System.Collections.Concurrent.ConcurrentDictionary`2 中找到该键,则为 true;否则为 false。
Exceptions
key 为 null。
TryRemove(TKey, out TValue)
尝试从 中移除。
public bool TryRemove(TKey key, out TValue value)Parameters
key TKey
要移除并返回的元素的键。
value TValue
当此方法返回时,将包含从 中移除的对象;如果 key 不存在,则包含 TValue 类型。
Returns
如果已成功移除对象,则为 true;否则为 false。
TryUpdate(TKey, TValue, TValue)
尝试从 中修改数据(对比数据不一致时进行修改)
public bool TryUpdate(TKey key, TValue newValue, TValue comparisonValue)Parameters
key TKey
要修改的元素的键
newValue TValue
修改的内容
comparisonValue TValue
比较的内容
Returns
如果已成功修改对象,则为 true;否则为 false。
TryUpdate(TKey, Func<TKey, TValue>, TValue)
尝试从 中修改数据(对比数据不一致时进行修改)
public bool TryUpdate(TKey key, Func<TKey, TValue> addValueFactory, TValue comparisonValue)Parameters
key TKey
要修改的元素的键
addValueFactory Func<TKey, TValue>
修改的内容委托
comparisonValue TValue
比较的内容
Returns
如果已成功修改对象,则为 true;否则为 false。