Ejemplo n.º 1
0
 int IStructuralEquatable.GetHashCode(System.Collections.IEqualityComparer comparer)
 {
     return(STuple.CombineHashCodes(
                this.Head != null ? this.Head.GetHashCode(comparer) : 0,
                comparer.GetHashCode(this.Tail)
                ));
 }
Ejemplo n.º 2
0
 int System.Collections.IStructuralEquatable.GetHashCode(System.Collections.IEqualityComparer comparer)
 {
     return(STuple.CombineHashCodes(
                comparer.GetHashCode(this.Item1),
                comparer.GetHashCode(this.Item2)
                ));
 }
Ejemplo n.º 3
0
 int IStructuralEquatable.GetHashCode(System.Collections.IEqualityComparer comparer)
 {
     return(STuple.CombineHashCodes(
                m_prefix.GetHashCode(),
                comparer.GetHashCode(m_items)
                ));
 }
Ejemplo n.º 4
0
 int IStructuralEquatable.GetHashCode(IEqualityComparer comparer)
 {
     return(STuple.CombineHashCodes(
                comparer.GetHashCode(this.Item1),
                comparer.GetHashCode(this.Item2),
                comparer.GetHashCode(this.Item3)
                ));
 }
        int IStructuralEquatable.GetHashCode(IEqualityComparer comparer)
        {
            bool canUseCache = object.ReferenceEquals(comparer, SimilarValueComparer.Default);

            if (m_hashCode.HasValue && canUseCache)
            {
                return(m_hashCode.Value);
            }

            int h = 0;

            for (int i = 0; i < m_count; i++)
            {
                h = STuple.CombineHashCodes(h, comparer.GetHashCode(m_slices[i + m_offset]));
            }
            if (canUseCache)
            {
                m_hashCode = h;
            }
            return(h);
        }
Ejemplo n.º 6
0
        int IStructuralEquatable.GetHashCode(System.Collections.IEqualityComparer comparer)
        {
            // the cached hashcode is only valid for the default comparer!
            bool canUseCache = object.ReferenceEquals(comparer, SimilarValueComparer.Default);

            if (m_hashCode.HasValue && canUseCache)
            {
                return(m_hashCode.Value);
            }

            int h = 0;

            for (int i = 0; i < m_count; i++)
            {
                var item = m_items[i + m_offset];

                h = STuple.CombineHashCodes(h, comparer.GetHashCode(item));
            }
            if (canUseCache)
            {
                m_hashCode = h;
            }
            return(h);
        }