Giriş
Şu satırı dahil ederiz.
Şöyle yaparız.
Örnek
Şöyle yaparız.
Şöyle yaparız.
Şu satırı dahil ederiz.
using System.Collections.Concurrent;
Bu sınıf için şu kurallar geçerli- Okuma (TryGetValue) lock-free bir işlemdir
- Enumeration (GetEnumerator) lock-free bir işlemdir
- Yazma işleminde kademeli lock kullanılır.
Kalıtım
Şöyle. IReadOnlyCollection arayüzünden de kalıtıyor.
Indexer Kullanımı
Şöyle. IReadOnlyCollection arayüzünden de kalıtıyor.
[SerializableAttribute]
[ComVisibleAttribute(false)]
[HostProtectionAttribute(SecurityAction.LinkDemand, Synchronization = true,
ExternalThreading = true)]
public class ConcurrentDictionary<TKey, TValue> : IDictionary<TKey, TValue>,
ICollection<KeyValuePair<TKey, TValue>>, IEnumerable<KeyValuePair<TKey, TValue>>,
IEnumerable, IDictionary, ICollection, IReadOnlyDictionary<TKey, TValue>,
IReadOnlyCollection<KeyValuePair<TKey, TValue>>
Indexer Kullanımı
Şöyle kullanılır.
var dic = new ConcurrentDictionary < int, int > ();
dic [0] = 123;
GetOrAdd metodu - Value
Yeni key value çiftini ekler. Eğer varsa eski değeri döner. Şöyle yaparız:ConcurrentDictionary<string, MyClass> dic;
MyClass value;
var value = dic.GetOrAdd("mykey", value);
GetOrAdd metodu - delegateŞöyle yaparız.var value = dic.GetorAdd(key, (key) => MyMethod())
GetOrAdd metodu - FunctionŞöyle yaparız.
var value = dic.GetorAdd(key, MyMethod)
TryGetValue metodu
True veya false döner.Örnek
Şöyle yaparız.
ConcurrentDictionary<string,string> myDic = new ConcurrentDictionary<string,string>();
myDic["key1"] = "value1";
string removed;
if (myDic.TryRemove("key1", out removed))
{
Console.WriteLine($"We have just remove {removed}");
}
ÖrnekŞöyle yaparız.
ConcurrentDictionary<string, StateBag> stateBagDict = ..., string name = ...;
StateBag match;
stateBagDict.TryGetValue(name.ToUpperInvariant(), out match);
Hiç yorum yok:
Yorum Gönder