gpt4 book ai didi

c# - 在添加和删除时通知的 ISet

转载 作者:行者123 更新时间:2023-11-30 20:24:27 24 4
gpt4 key购买 nike

我想要一个 ISet<T>还有两个附加事件 ItemAddedItemRemoved .

我考虑的一个选项是派生 MyHashSet<T>来自 HashSet<T>但自 AddRemove不是虚拟的,它需要使用 new .也许这是对关键字的有效使用?

我认为的另一个选择是实现 ISet<T>并将所有内容委托(delegate)给 HashSet<T> 的私有(private)实例.这感觉像是一个笨重的解决方案。

是否有一种模式或框架类可以获得相同的结果但不需要低于优雅/理想的编码?

最佳答案

根据我收到的评论(感谢),这是我得到的:

public class NotifyingHashSet<T>
{
private HashSet<T> hashSet = new HashSet<T>();

public bool Add(T item)
{
bool added = hashSet.Add(item);
if(added && ItemAdded != null)
{
ItemAdded(this, new NotifyingHashSetEvent<T>(item));
}
return added;
}

public bool Remove(T item)
{
bool removed = hashSet.Remove(item);
if(removed && ItemRemoved != null)
{
ItemRemoved(this, new NotifyingHashSetEvent<T>(item));
}
return removed;
}

public event EventHandler<NotifyingHashSetEvent<T>> ItemAdded;

public event EventHandler<NotifyingHashSetEvent<T>> ItemRemoved;
}

public class NotifyingHashSetEvent<T> : EventArgs
{
public NotifyingHashSetEvent(T item)
{
Item = item;
}

public T Item { get; set; }
}

关于c# - 在添加和删除时通知的 ISet<T>?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26772648/

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