public bool Equals(WindowList other) { if (other == null) { return(false); } //Здесь сравнение по ссылкам необязательно. //Если вы уверены, что многие проверки на идентичность будут отсекаться на проверке по ссылке - //можно имплементировать. if (object.ReferenceEquals(this, other)) { return(true); } //Если по логике проверки, экземпляры родительского класса и класса потомка могут считаться равными, //то проверять на идентичность необязательно и можно переходить сразу к сравниванию полей. if (this.GetType() != other.GetType()) { return(false); } if (this.ID == other.ID && this.Heigt == other.Heigt && this.Left == other.Left && this.Title == other.Title && this.Top == other.Top && this.Width == other.Width) { return(true); } else { return(false); } }