<PackageReference Include="Newtonsoft.Json" Version="13.0.2" />

Tuple<TFirst, TSecond>

struct Tuple<TFirst, TSecond> : IEquatable<Tuple<TFirst, TSecond>>
using System; using System.Collections.Generic; using System.Globalization; namespace Newtonsoft.Json.Utilities.LinqBridge { [Serializable] internal readonly struct Tuple<TFirst, TSecond> : IEquatable<Tuple<TFirst, TSecond>> { public TFirst First { get; } public TSecond Second { get; } public Tuple(TFirst first, TSecond second) { this = default(Tuple<TFirst, TSecond>); First = first; Second = second; } public override bool Equals(object obj) { if (obj != null && obj is Tuple<TFirst, TSecond>) return ((ValueType)this).Equals((object)(Tuple<TFirst, TSecond>)obj); return false; } public bool Equals(Tuple<TFirst, TSecond> other) { if (EqualityComparer<TFirst>.Default.Equals(other.First, First)) return EqualityComparer<TSecond>.Default.Equals(other.Second, Second); return false; } public override int GetHashCode() { int num = 2049903426; num = -1521134295 * num + EqualityComparer<TFirst>.Default.GetHashCode(First); return -1521134295 * num + EqualityComparer<TSecond>.Default.GetHashCode(Second); } public override string ToString() { return string.Format(CultureInfo.InvariantCulture, "{{ First = {0}, Second = {1} }}", new object[2] { First, Second }); } } }