powered by simpleCommunicator - 2.0.57     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Почему null == object, но не наоборот?
16 сообщений из 16, страница 1 из 1
Почему null == object, но не наоборот?
    #38131791
user7320
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что за мода пошла такая, сравнивать на null объекты путём сравнения null с объектом, а не объекта с null? Т. е., например

Код: c#
1.
if (null == object)



а не

Код: c#
1.
if (ogject == null)



Зачем и почему это делается? По смыслу же правильнее будет второй вариант.
...
Рейтинг: 0 / 0
Почему null == object, но не наоборот?
    #38131820
Arm79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
user7320,

На вкус и цвет товарищей нет. И как вы определили смысловую правильность второго варианта?
...
Рейтинг: 0 / 0
Почему null == object, но не наоборот?
    #38131850
bazile
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
user7320, сравнение является коммутативной операцией поэтому выбор варианта является вопросом вкуса. "Мода" же пошла из C++ где код вида if (smth = null) является допустимым. Чтобы избегать подобных простых ошибок операнды переставляют местами т.к. null нельзя изменить. Правила C# такое не допускают и нет реальной необходимости использовать первый вариант.
...
Рейтинг: 0 / 0
Почему null == object, но не наоборот?
    #38132087
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bazileПравила C# такое не допускают
Допускают. Если операнды bool - можно.
( использование стиля if(a== true) - не обсуждаем)
...
Рейтинг: 0 / 0
Почему null == object, но не наоборот?
    #38132193
bazile
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИзопропилДопускают. Если операнды bool - можно.
Действительно. Спасибо за поправку. Логично в общем то. If ожидает булевское выражение и присвоение типу bool им является.
...
Рейтинг: 0 / 0
Почему null == object, но не наоборот?
    #38132196
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bazile, +1

Это не мода, а привычка со времён C++. Первое время (9 лет назад) тоже так писал.
...
Рейтинг: 0 / 0
Почему null == object, но не наоборот?
    #38132198
user7320
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Arm79user7320,

На вкус и цвет товарищей нет. И как вы определили смысловую правильность второго варианта?
С точки зрения конечного результата - никакого. А с точки зрения последовательности действий - есть. Сначала во внимание попадает именно объект, который хочу сравнить, т. к. обычно этот объект имел место быть на предыдущей строке кода (например, он откуда-то получается). И в следующей строке, если хочу сравнить, его с каким-то значением, то он должен идти первым в сравнении, а если первым идёт то значение, с которым сравниваю, то на секунду возникает непонимание - "а зачем тут это значение и куда делся первый объект?". Конечно, через секунду всё проходит, но вот таких и подобных непонятных выкрутасов с кодом может быть десятки на файл. И становится неприятно читать такой код. Это как читать текст на иностранном языке, когда вы не все слова знаете и вам трудно догадаться о чём идёт речь или возникает двусмысленность. Вам приходится лезть в словарь, в результате понимание замедляется и вы раздражаетесь. Вот и тут - и так напрягаешься, чтобы понять суть, что делает код, так ещё зачем-то кодер пытается выпендриваться и "делать не так, как все". Ну, а когда "не такими, как все" становится большинство, то начинаешь думать, что за этим хитрым написанием есть какой-то скрытый смысл, а ты его не знаешь. Начинаешь думать, что ты дурак, несмотря на весь свой опыт, что даже такой простой вещи не знаешь. А оказывается, что просто кто-то выпендривается. И когда это понимаешь, то охота материтсья. Нахера выпендриваться, когда жизнь и так сложная?
...
Рейтинг: 0 / 0
Почему null == object, но не наоборот?
    #38132213
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
user7320, ути-пути, жизнь сложная :)

Вот когда в C++ по ошибке писали if (obj = 0) вместо if (obj == null), вот тогда она была сложная. Многие наступили на эти грабли и привыкли писать if (null == obj). Точка.
...
Рейтинг: 0 / 0
Почему null == object, но не наоборот?
    #38132216
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAкогда в C++ по ошибке писали if (obj = null) вместо if (obj == null)...
...
Рейтинг: 0 / 0
Почему null == object, но не наоборот?
    #38132221
user7320
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAuser7320, ути-пути, жизнь сложная :)

Вот когда в C++ по ошибке писали if (obj = 0) вместо if (obj == null), вот тогда она была сложная. Многие наступили на эти грабли и привыкли писать if (null == obj). Точка.
Т. е. вместо того, чтобы надеть очки и взять в руки костыли, калеки уменьшили расстояния до всех объектов и перевели всё ножное управление на ручное, усложнив тем самым жизнь нормальным людям, лишь бы им, родимым, было хорошо?
...
Рейтинг: 0 / 0
Почему null == object, но не наоборот?
    #38132225
beg-in-er
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAskyANAкогда в C++ по ошибке писали if (obj = null) вместо if (obj == null)...
а... вот почему в паскале :=
мне это до сих пор нравится, хотя не писал на нём уж...наверное в последний раз где-то в прошлом веке
...
Рейтинг: 0 / 0
Почему null == object, но не наоборот?
    #38132227
user7320
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ладно, я тоже буду так делать. Вы у меня попляшете!
...
Рейтинг: 0 / 0
Почему null == object, но не наоборот?
    #38132237
user7320
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Во, нашёл хороший ответ тем, кто боится поздно вечером, когда уже охота спать, присвоить налл объекту: http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=965394&msg=13075203

Только директиву эту надо на функцию в какой-нибудь общедоступной во всём прокете библиотеке или функции заменить. А то директивы в Шарпе только на текущий файл работают (я знаю - пытался ещё в другой теме спросить, как директиву объявить сразу по всему проекту, но в одном месте - сказали, что никак).
...
Рейтинг: 0 / 0
Почему null == object, но не наоборот?
    #38132262
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
= и == появились ещё в C


Компиляторы PL/I задолго до этого справлялись с конструкцией типа
IF THEN=ELSE THEN ELSE=THEN; ELSE THEN=ELSE;
...
Рейтинг: 0 / 0
Почему null == object, но не наоборот?
    #38132263
bazile
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
user7320Во, нашёл хороший ответ тем, кто боится поздно вечером, когда уже охота спать, присвоить налл объекту: http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=965394&msg=13075203] http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=965394&msg=13075203
Тебе уже сказали что в C# это ошибку допустить невозможно. Директива #define из твоей ссылки не будет работать в C#. Что ты хотел в итоге этим сказать лично мне непонятно.

user7320А то директивы в Шарпе только на текущий файл работают (я знаю - пытался ещё в другой теме спросить, как директиву объявить сразу по всему проекту, но в одном месте - сказали, что никак).
На проект как раз таки можно. В его свойствах.
...
Рейтинг: 0 / 0
Почему null == object, но не наоборот?
    #38132311
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
user7320Ладно, я тоже буду так делать. Вы у меня попляшете!Напугал ежа голой жопой.
...
Рейтинг: 0 / 0
16 сообщений из 16, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Почему null == object, но не наоборот?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]