Пример #1
0
        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));
            }
        }
Пример #2
0
        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);
        }