Перегрузка операций

ТОрчОК

в чем причина?
        public static bool operator ==(Card card1, Card card2)
        {
            return (card1.val == card2.val && card1.suit == card2.suit);   // здесь возникает исключение
        }
        public static bool operator !=(Card card1, Card card2)
        {
            return !(card1.val == card2.val && card1.suit == card2.suit)
        }
        public override bool Equals(object card)
        {
            return (this == card as Card);
        }
        public override int GetHashCode()
        {
            return (int)val + (int)suit.IndexOf(suit);
        }
An unhandled exception of type 'System.NullReferenceException' occurred in ConsoleApplication3.exeAdditional information: Ссылка на объект не указывает на экземпляр объекта.
1 ответ

ТОрчОК

в чем причина?
Вот в этом:
return (this == card as Card)
Если сравнить объект не с экземпляром Card, то оператор as вернет null:
Card card = new Card();
card.Equals("KABOOM!");
Добавьте в тело оператора проверки на null.