Exemple #1
0
 public override bool Equals(object other)
 => Equality.Untyped <PartialEqF <T1, T2, U> >(
     this,
     other,
     x => x as PartialEqF <T1, T2, U>,
     x => x.hashCode,
     x => x.f,
     x => x.arg1);
Exemple #2
0
 public override bool Equals(object other)
 => Equality.Untyped <PureImmutableEnumeratorElement <U> >(
     this,
     other,
     x => x as PureImmutableEnumeratorElement <U>,
     x => x.hashCode,
     // Two immutable enumerators are equal if and only if
     // they have the same (immutable) state and use the same
     // generator lambda.
     x => x.element,
     x => x.rest);
Exemple #3
0
 public override bool Equals(object other)
 => Equality.Untyped <ImmutableEnumerator <U> >(
     this,
     other,
     x => x as ImmutableEnumerator <U>,
     x => x.hashCode,
     // Two immutable enumerators are equal if and only if
     // they are at the same position and use the same
     // underlying enumerable. In that case they are guaranteed
     // to behave identically to an outside observer (except for
     // side-effects caused by the iteration of the underlying
     // enumerator, which only occur on the first .MoveNext()
     // call, if it is called on several equal immutable
     // enumerators). This is also true for the
     // ImmutableEnumeratorElement subclass, because if two of
     // these have the same underlying generator, their current
     // field are necessarily one and the same.
     (x, y) => Object.ReferenceEquals(x.next, y.next));
Exemple #4
0
 public override bool Equals(object other)
 => Equality.Untyped <Unit>(this, other, x => x as Unit, x => x.hashCode);