F/Date/FHashSet.cs

(开头部分) 4KB

这里只显示每个文件的开头 60 行。登录后可以解锁完整代码。

using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace System
{
#if !NET4
    /// <summary>哈希集合。内部采用泛型字典实现,如若在.Net 4.0环境,可直接使用.Net 4.0的HashSet。</summary>
    /// <typeparam name="T"></typeparam>
    public class FHashSet<T> : ICollection<T>
    {
        #region 初始化
        Dictionary<T, T> _dic;

        /// <summary>实例化一个哈希集合</summary>
        public FHashSet() : this(null, null) { }

        /// <summary>指定比较接口实例化一个哈希集合</summary>
        /// <param name="comparer"></param>
        public FHashSet(IEqualityComparer<T> comparer) : this(null, comparer) { }

        /// <summary>指定来源数据实例化一个哈希集合</summary>
        /// <param name="data"></param>
        public FHashSet(IEnumerable data) : this(data, null) { }

        /// <summary>指定来源数据和比较接口实例化一个哈希集合</summary>
        /// <param name="data"></param>
        /// <param name="comparer"></param>
        public FHashSet(IEnumerable data, IEqualityComparer<T> comparer)
        {
            if (comparer == null)
                _dic = new Dictionary<T, T>();
            else
                _dic = new Dictionary<T, T>(comparer);

            if (data != null)
            {
                foreach (T item in data)
                {
                    //_dic.Add(item, item);
                    _dic[item] = item;
                }
            }
        }
        #endregion

        #region ICollection<T> 成员
        /// <summary>将指定的键和值添加到集合中。</summary>
        /// <param name="item"></param>
        public void Add(T item)
        {
            if (IsReadOnly) throw new Exception("不能改变只读集合!");

            _dic.Add(item, item);
        }

        /// <summary>从集合中移除所有的键和值。</summary>
        public void Clear()
后面还有 68 行代码,解锁后查看完整代码

24 小时内免费解锁 3 个项目,之后 1 积分/个。 规则说明

AI 解读

登录后可用,每次 10 积分,解读结果公开显示在下面。

还没有人解读过这个文件。