public override int GetHashCode() { var bricksHash = Bricks.Aggregate(0, (i, details) => i ^ details.GetHashCode()); var stonesHash = Stones.Aggregate(0, (i, details) => i ^ details.GetHashCode()); var waterHash = Water.Aggregate(0, (i, details) => i ^ details.GetHashCode()); unchecked { return(((Bricks.Count() * 397) ^ bricksHash) + ((Stones.Count() * 397) ^ stonesHash) + ((Water.Count() * 397) ^ waterHash)); } }
public bool Equals(InitiationMessage other) { if (ReferenceEquals(null, other)) { return(false); } if (ReferenceEquals(this, other)) { return(true); } // Refer BroadcastMessage for comments on how Equals method is implemented. var bricksEquality = Bricks.Count() == other.Bricks.Count() && Bricks.All(other.Bricks.Contains); var stonesEquality = Stones.Count() == other.Stones.Count() && Stones.All(other.Stones.Contains); var waterEquality = Water.Count() == other.Water.Count() && Water.All(other.Water.Contains); return(PlayerNumber == other.PlayerNumber && bricksEquality && stonesEquality && waterEquality); }