首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何在C#中创建一个Observable Hashset?

在C#中创建一个Observable Hashset可以通过使用System.Collections.ObjectModel.ObservableCollectionSystem.Collections.Specialized.NotifyCollectionChangedEventHandler实现。下面是一个简单的示例代码:

代码语言:csharp
复制
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Collections.Specialized;

public class ObservableHashSet<T> : ObservableCollection<T>
{
    private readonly HashSet<T> _hashSet;

    public ObservableHashSet()
        : base()
    {
        _hashSet = new HashSet<T>();
    }

    public ObservableHashSet(IEnumerable<T> collection)
        : base(collection)
    {
        _hashSet = new HashSet<T>(collection);
    }

    public new void Add(T item)
    {
        if (_hashSet.Add(item))
        {
            base.Add(item);
        }
    }

    public new void Remove(T item)
    {
        if (_hashSet.Remove(item))
        {
            base.Remove(item);
        }
    }
}

public class MainClass
{
    public static void Main(string[] args)
    {
        ObservableHashSet<string> observableHashSet = new ObservableHashSet<string>();

        // 添加元素
        observableHashSet.Add("Hello");
        observableHashSet.Add("World");
        observableHashSet.Add("Hello"); // 不会重复添加

        // 移除元素
        observableHashSet.Remove("World");
        observableHashSet.Remove("World"); // 不会抛出异常

        // 监听集合变化
        observableHashSet.CollectionChanged += (sender, e) =>
        {
            Console.WriteLine($"Action: {e.Action}, NewItems: {e.NewItems}, OldItems: {e.OldItems}");
        };

        // 添加元素
        observableHashSet.Add("Test");
        // 输出:Action: Add, NewItems: System.Collections.Generic.List`1[System.Object], OldItems: , Test

        // 移除元素
        observableHashSet.Remove("Test");
        // 输出:Action: Remove, NewItems: , OldItems: System.Collections.Generic.List`1[System.Object], Test
    }
}

这个示例代码中,我们创建了一个名为ObservableHashSet的泛型类,继承自ObservableCollection,并使用HashSet来确保集合中的元素唯一。我们重写了AddRemove方法,以便在添加或删除元素时更新HashSetObservableCollection

MainClass中,我们创建了一个ObservableHashSet实例,并向其中添加和删除元素。我们还添加了一个CollectionChanged事件处理程序,以便在集合发生变化时输出相关信息。

这个示例代码展示了如何在C#中创建一个Observable Hashset,并且可以根据需要进行扩展和定制。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

领券