Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 04.08.2017, 15:31   #1
bearstrong
Новичок
Джуниор
 
Регистрация: 04.08.2017
Сообщений: 2
Сообщение перегрузка true и false

Добрый день, при перегрузке операторов true и false не могу понять как попасть в перегруженный false, например вот фрагмент кода :

Код:
 public static bool operator true(xyz obj)
            {
                if ((obj.x > 0) && (obj.y > 0) && (obj.z > 0))
                {
                    Console.WriteLine("в методе true, возвращаем true");
                    return true;
                }
                else
                {
                    Console.WriteLine("в методе true, возвращаем false");
                    return false;
                }
                
            }


            public static bool operator false(xyz obj)
            {
                if ((obj.x <= 0) || (obj.y <= 0) || (obj.z <= 0))
                    
                 {
                    Console.WriteLine("в методе false, возвращаем true");
                    return true;
                 }
                else
                {
                    Console.WriteLine("в методе false, возвращаем false");
                    return false;
                }

            У нас есть обьект но какие бы я значения не подставлял компилятор никогда не оказывается в методе false
          
          xyz ob1 = new xyz(1,-2,5);
            if (ob1)
                Console.WriteLine("true");
            else Console.WriteLine("false");
Тогда собственно зачем его расписывать, если в теле метода можно всегда возвращать допустим false и не париться, все равно эту часть кода он не проходит?

Последний раз редактировалось Вадим Мошев; 04.08.2017 в 18:04.
bearstrong вне форума Ответить с цитированием
Старый 04.08.2017, 15:39   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,709
По умолчанию

Напишите if(obj == false)
p51x вне форума Ответить с цитированием
Старый 04.08.2017, 16:39   #3
bearstrong
Новичок
Джуниор
 
Регистрация: 04.08.2017
Сообщений: 2
По умолчанию

Допустим, но зачем необходимо перегружать оператор false конкретно в данном примере? Код взял из учебника, так что он правильный но в то же время до метода false ни как не достучаться через параметры что нам по идее и нужно!
bearstrong вне форума Ответить с цитированием
Старый 04.08.2017, 16:52   #4
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,709
По умолчанию

По простому: т.к. это требует документация. Чуть сложнее: компилятор может соптимизировать код и заменить сравнение на обратное.
p51x вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
True И False noisor Паскаль, Turbo Pascal, PascalABC.NET 15 16.11.2014 20:40
Как поменять true на false? diomed16 Общие вопросы Delphi 18 28.09.2012 07:25
Задачи на true и false Bekzat Помощь студентам 1 06.12.2011 18:20
False,True Jony Wocker Общие вопросы C/C++ 2 06.02.2010 00:42
Проверка (True or False for CheckBox) NeiL Общие вопросы Delphi 5 31.01.2008 09:42