Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> переопределение equals, всегад выдает false 
V
    Опции темы
EvgenZ
Дата 22.2.2007, 11:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Freedom in me
**


Профиль
Группа: Участник
Сообщений: 407
Регистрация: 3.8.2006

Репутация: нет
Всего: 11



Третий день изучаю С# написал следующий код 
Код

using System;
using System.Text;

namespace one {

    class PR {
        public PR(int a, int b) { mA = a; mB = b; }
        public override string ToString()
        {
            StringBuilder sb = new StringBuilder();
            sb.AppendFormat("a = {0} ",mA);
            sb.AppendFormat("b= {0} ",mB);
            return sb.ToString();
        }
        public override bool Equals(object obj)
        {
            if (obj == null && obj is PR)
            {
                PR a = (PR)obj;
                if (a.mA == this.mA && a.mB == this.mB)
                    return true;
            }
            return false;
        }
        public override int GetHashCode()
        {
            return ToString().GetHashCode();
        }
        private int mA;
        private int mB;
    };

    class main{
        public static void Main() {
            PR n = new PR(1, 3);
            PR nn = new PR(1,3);
         
            Console.WriteLine(n.ToString()+ "  equals " + n.Equals(nn));
        }
    
    };
}


при стравнении всегда выдаешь фальшь все из-за вот этого фрагмента
Код

 if (obj == null && obj is PR)

если я уберу сравнение с null, то все сравнится, как надо. Но я не пойму почему она считает, что obj нулевой. Объясните пожалуйста в чем дело  smile .


--------------------
<удалено администрацией форума>
PM MAIL   Вверх
Idsa
Дата 22.2.2007, 12:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 2086
Регистрация: 5.12.2006
Где: Томск

Репутация: 14
Всего: 62



Тебе нужно изменить этот код:
Код

if (obj == null && obj is PR)

на
Код

if (obj != null && obj is PR)

Ты же должен во избежание NullReferenceException проверять, чтобы объект был не null, а не наоборот!


--------------------
Мой блог: alexidsa.blogspot.com
PM MAIL ICQ   Вверх
EvgenZ
Дата 22.2.2007, 12:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Freedom in me
**


Профиль
Группа: Участник
Сообщений: 407
Регистрация: 3.8.2006

Репутация: нет
Всего: 11



ААААААААа блин точно!! вот тупанул  smile , спасибо!

Добавлено @ 12:04 
ААААААААа блин точно!! вот тупанул  smile , спасибо!


--------------------
<удалено администрацией форума>
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




[ Время генерации скрипта: 0.0423 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.