System.Collections.Immutable by Microsoft

<PackageReference Include="System.Collections.Immutable" Version="8.0.0-preview.2.23128.3" />

.NET API 250,032 bytes

 ItemsFrozenSet<T, TThisWrapper>

abstract class ItemsFrozenSet<T, TThisWrapper> : FrozenSetInternalBase<T, TThisWrapper> where TThisWrapper : struct, IGenericSpecializedWrapper<T, TThisWrapper>
Provides a base class for frozen sets that store their values in a dedicated array.
using System.Collections.Generic; using System.Runtime.CompilerServices; namespace System.Collections.Frozen { [System.Runtime.CompilerServices.NullableContext(1)] [System.Runtime.CompilerServices.Nullable(new byte[] { 0, 1, 0 })] internal abstract class ItemsFrozenSet<[System.Runtime.CompilerServices.Nullable(2)] T, [System.Runtime.CompilerServices.Nullable(0)] TThisWrapper> : FrozenSetInternalBase<T, TThisWrapper> where TThisWrapper : struct, FrozenSetInternalBase<T, TThisWrapper>.IGenericSpecializedWrapper { private protected readonly FrozenHashTable _hashTable; private protected readonly T[] _items; private protected sealed override T[] ItemsCore => _items; private protected sealed override int CountCore => _hashTable.Count; protected ItemsFrozenSet(HashSet<T> source, bool optimizeForReading = true) : base(source.Comparer) { T[] entries = new T[source.Count]; source.CopyTo(entries); _items = new T[entries.Length]; _hashTable = FrozenHashTable.Create(entries.Length, delegate(int index) { T val = entries[index]; if (val == null) return 0; return base.Comparer.GetHashCode(val); }, delegate(int destIndex, int srcIndex) { _items[destIndex] = entries[srcIndex]; }, optimizeForReading); } [return: System.Runtime.CompilerServices.Nullable(new byte[] { 0, 1 })] private protected sealed override Enumerator GetEnumeratorCore() { return new Enumerator(_items); } } }