diff --git a/src/System.Collections/src/System/Collections/Generic/HashSet.cs b/src/System.Collections/src/System/Collections/Generic/HashSet.cs index e966a6c8b2cd..3466ac7ec34b 100644 --- a/src/System.Collections/src/System/Collections/Generic/HashSet.cs +++ b/src/System.Collections/src/System/Collections/Generic/HashSet.cs @@ -75,22 +75,16 @@ public class HashSet : ICollection, ISet, IReadOnlyCollection #region Constructors public HashSet() - : this(EqualityComparer.Default) + : this(0, EqualityComparer.Default) { } public HashSet(IEqualityComparer comparer) - { - if (comparer == null) - { - comparer = EqualityComparer.Default; - } + : this(0, comparer) + { } - _comparer = comparer; - _lastIndex = 0; - _count = 0; - _freeList = -1; - _version = 0; - } + public HashSet(int capacity) + : this(capacity, EqualityComparer.Default) + { } public HashSet(IEnumerable collection) : this(collection, EqualityComparer.Default) @@ -131,6 +125,30 @@ public HashSet(IEnumerable collection, IEqualityComparer comparer) } } + public HashSet(int capacity, IEqualityComparer comparer) + { + if (capacity < 0) + { + throw new ArgumentOutOfRangeException("capacity"); + } + + if (comparer == null) + { + comparer = EqualityComparer.Default; + } + + _comparer = comparer; + _lastIndex = 0; + _count = 0; + _freeList = -1; + _version = 0; + + if (capacity > 0) + { + Initialize(capacity); + } + } + #endregion #region ICollection methods