gpt4 book ai didi

c# - 如何在 C# 中将键值添加到字典时通知\引发事件

转载 作者:太空宇宙 更新时间:2023-11-03 17:50:44 24 4
gpt4 key购买 nike

如果将新的键\值对添加到静态字典,我想在另一个线程中执行一些操作。一种朴素的方法是频繁地进行轮询并检查是否包含 ContainsKey(givenKey),但我想做得更快而不是延迟轮询。

最佳答案

您必须创建自己的词典。最佳做法是:

public enum Type
{
AddItem,
RemoveItem
}

public class DictChangedEventArgs<K, V> : EventArgs
{
public Type Type
{
get;
set;
}

public K Key
{
get;
set;
}

public V Value
{
get;
set;
}
}

public class OwnDict<K, V> : IDictionary<K, V>
{
public delegate void DictionaryChanged(object sender, DictChangedEventArgs<K, V> e);

public event DictionaryChanged OnDictionaryChanged;

private IDictionary<K, V> innerDict;

public OwnDict()
{
innerDict = new Dictionary<K, V>();
}

public void Add(K key, V value)
{
if (OnDictionaryChanged != null)
{
OnDictionaryChanged(this, new DictChangedEventArgs<K, V>() { Type = Type.AddItem, Key = key, Value = value });
}

innerDict.Add(key, value);
}

// ...
// ...
}

现在您可以自由地为 Before-Add-ItemAfter-Add-Item 创建事件。您还可以将一些 Handled 参数添加到您的 DictChangedEventArgs -Class 以防止添加特殊项目。您还可以决定使用 Type-Enum 或为每个操作创建自己的事件。

但是可以肯定的是,您必须实现 IDictionary 中的所有方法,但这应该非常容易。

关于c# - 如何在 C# 中将键值添加到字典时通知\引发事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28039374/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com