| 123456789101112131415161718192021222324252627282930313233343536373839404142434445 | // Copyright (c) Microsoft Open Technologies, Inc. All rights reserved. See License.txt in the project root for license information.#if NO_HASHSETusing System;using System.Collections.Generic;namespace System.Reactive{    class HashSet<T>    {        private readonly Dictionary<T, object> _set;        private bool _hasNull;        public HashSet(IEqualityComparer<T> comparer)        {            _set = new Dictionary<T, object>(comparer);            _hasNull = false;        }        public bool Add(T value)        {            //            // Note: The box instruction in the IL will be erased by the JIT in case T is            //       a value type. See GroupBy for more information.            //            if (value == null)            {                if (_hasNull)                    return false;                _hasNull = true;                return true;            }            else            {                if (_set.ContainsKey(value))                    return false;                _set[value] = null;                return true;            }        }    }}#endif
 |