Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > .NET для новичков > Перегрузка оператора == и проверка на null


Автор: Dblma 27.8.2009, 16:47
Как сопоставить 2 этих момента? 
Получается, что если мы перегрузим оператор ==, то при проверке == null мы идём в перегруженный нами оператор, а там есть 2 варианта - либо NullReferenceException, либо, если пытаемся проверить на null аргументы, бесконечную рекурсию.

Как быть?

Автор: mihryak 27.8.2009, 17:08
http://msdn.microsoft.com/en-us/library/ms173147%28VS.80%29.aspx

я перегружаю примерно так
Код

    public class MyClass
    {

        public Guid Id { get; set; }

        #region Equality overrides

        public bool Equals(MyClass myClass)
        {
            return ReferenceEquals(myClass, null) ? false : Id == myClass.Id;
        }

        public override bool Equals(object obj)
        {
            return Equals(obj as MyClass );
        }

        public override int GetHashCode()
        {
            return Id.GetHashCode();
        }

        public static bool operator ==(MyClass left, MyClass right)
        {
            return ReferenceEquals(left, null) ? ReferenceEquals(right, null) : left.Equals(right);
        }

        public static bool operator !=(MyClass left, MyClass right)
        {
            return !(left == right);
        }

        #endregion
    }

Автор: Dblma 27.8.2009, 17:24
Понял, спасибо.
Подумал бы чуть подольше - сам бы додумался.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)