|
Почему null == object, но не наоборот?
|
|||
---|---|---|---|
#18+
Что за мода пошла такая, сравнивать на null объекты путём сравнения null с объектом, а не объекта с null? Т. е., например Код: c# 1.
а не Код: c# 1.
Зачем и почему это делается? По смыслу же правильнее будет второй вариант. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.01.2013, 10:12 |
|
Почему null == object, но не наоборот?
|
|||
---|---|---|---|
#18+
user7320, На вкус и цвет товарищей нет. И как вы определили смысловую правильность второго варианта? ... |
|||
:
Нравится:
Не нравится:
|
|||
31.01.2013, 10:29 |
|
Почему null == object, но не наоборот?
|
|||
---|---|---|---|
#18+
user7320, сравнение является коммутативной операцией поэтому выбор варианта является вопросом вкуса. "Мода" же пошла из C++ где код вида if (smth = null) является допустимым. Чтобы избегать подобных простых ошибок операнды переставляют местами т.к. null нельзя изменить. Правила C# такое не допускают и нет реальной необходимости использовать первый вариант. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.01.2013, 10:48 |
|
Почему null == object, но не наоборот?
|
|||
---|---|---|---|
#18+
bazileПравила C# такое не допускают Допускают. Если операнды bool - можно. ( использование стиля if(a== true) - не обсуждаем) ... |
|||
:
Нравится:
Не нравится:
|
|||
31.01.2013, 12:38 |
|
Почему null == object, но не наоборот?
|
|||
---|---|---|---|
#18+
ИзопропилДопускают. Если операнды bool - можно. Действительно. Спасибо за поправку. Логично в общем то. If ожидает булевское выражение и присвоение типу bool им является. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.01.2013, 13:11 |
|
Почему null == object, но не наоборот?
|
|||
---|---|---|---|
#18+
bazile, +1 Это не мода, а привычка со времён C++. Первое время (9 лет назад) тоже так писал. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.01.2013, 13:13 |
|
Почему null == object, но не наоборот?
|
|||
---|---|---|---|
#18+
Arm79user7320, На вкус и цвет товарищей нет. И как вы определили смысловую правильность второго варианта? С точки зрения конечного результата - никакого. А с точки зрения последовательности действий - есть. Сначала во внимание попадает именно объект, который хочу сравнить, т. к. обычно этот объект имел место быть на предыдущей строке кода (например, он откуда-то получается). И в следующей строке, если хочу сравнить, его с каким-то значением, то он должен идти первым в сравнении, а если первым идёт то значение, с которым сравниваю, то на секунду возникает непонимание - "а зачем тут это значение и куда делся первый объект?". Конечно, через секунду всё проходит, но вот таких и подобных непонятных выкрутасов с кодом может быть десятки на файл. И становится неприятно читать такой код. Это как читать текст на иностранном языке, когда вы не все слова знаете и вам трудно догадаться о чём идёт речь или возникает двусмысленность. Вам приходится лезть в словарь, в результате понимание замедляется и вы раздражаетесь. Вот и тут - и так напрягаешься, чтобы понять суть, что делает код, так ещё зачем-то кодер пытается выпендриваться и "делать не так, как все". Ну, а когда "не такими, как все" становится большинство, то начинаешь думать, что за этим хитрым написанием есть какой-то скрытый смысл, а ты его не знаешь. Начинаешь думать, что ты дурак, несмотря на весь свой опыт, что даже такой простой вещи не знаешь. А оказывается, что просто кто-то выпендривается. И когда это понимаешь, то охота материтсья. Нахера выпендриваться, когда жизнь и так сложная? ... |
|||
:
Нравится:
Не нравится:
|
|||
31.01.2013, 13:13 |
|
Почему null == object, но не наоборот?
|
|||
---|---|---|---|
#18+
user7320, ути-пути, жизнь сложная :) Вот когда в C++ по ошибке писали if (obj = 0) вместо if (obj == null), вот тогда она была сложная. Многие наступили на эти грабли и привыкли писать if (null == obj). Точка. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.01.2013, 13:18 |
|
Почему null == object, но не наоборот?
|
|||
---|---|---|---|
#18+
skyANAкогда в C++ по ошибке писали if (obj = null) вместо if (obj == null)... ... |
|||
:
Нравится:
Не нравится:
|
|||
31.01.2013, 13:19 |
|
Почему null == object, но не наоборот?
|
|||
---|---|---|---|
#18+
skyANAuser7320, ути-пути, жизнь сложная :) Вот когда в C++ по ошибке писали if (obj = 0) вместо if (obj == null), вот тогда она была сложная. Многие наступили на эти грабли и привыкли писать if (null == obj). Точка. Т. е. вместо того, чтобы надеть очки и взять в руки костыли, калеки уменьшили расстояния до всех объектов и перевели всё ножное управление на ручное, усложнив тем самым жизнь нормальным людям, лишь бы им, родимым, было хорошо? ... |
|||
:
Нравится:
Не нравится:
|
|||
31.01.2013, 13:21 |
|
Почему null == object, но не наоборот?
|
|||
---|---|---|---|
#18+
skyANAskyANAкогда в C++ по ошибке писали if (obj = null) вместо if (obj == null)... а... вот почему в паскале := мне это до сих пор нравится, хотя не писал на нём уж...наверное в последний раз где-то в прошлом веке ... |
|||
:
Нравится:
Не нравится:
|
|||
31.01.2013, 13:24 |
|
Почему null == object, но не наоборот?
|
|||
---|---|---|---|
#18+
Ладно, я тоже буду так делать. Вы у меня попляшете! ... |
|||
:
Нравится:
Не нравится:
|
|||
31.01.2013, 13:24 |
|
Почему null == object, но не наоборот?
|
|||
---|---|---|---|
#18+
Во, нашёл хороший ответ тем, кто боится поздно вечером, когда уже охота спать, присвоить налл объекту: http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=965394&msg=13075203 Только директиву эту надо на функцию в какой-нибудь общедоступной во всём прокете библиотеке или функции заменить. А то директивы в Шарпе только на текущий файл работают (я знаю - пытался ещё в другой теме спросить, как директиву объявить сразу по всему проекту, но в одном месте - сказали, что никак). ... |
|||
:
Нравится:
Не нравится:
|
|||
31.01.2013, 13:30 |
|
Почему null == object, но не наоборот?
|
|||
---|---|---|---|
#18+
= и == появились ещё в C Компиляторы PL/I задолго до этого справлялись с конструкцией типа IF THEN=ELSE THEN ELSE=THEN; ELSE THEN=ELSE; ... |
|||
:
Нравится:
Не нравится:
|
|||
31.01.2013, 13:38 |
|
Почему null == object, но не наоборот?
|
|||
---|---|---|---|
#18+
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А то директивы в Шарпе только на текущий файл работают (я знаю - пытался ещё в другой теме спросить, как директиву объявить сразу по всему проекту, но в одном месте - сказали, что никак). На проект как раз таки можно. В его свойствах. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.01.2013, 13:39 |
|
|
start [/forum/topic.php?fid=20&msg=38132225&tid=1405248]: |
0ms |
get settings: |
10ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
53ms |
get topic data: |
12ms |
get forum data: |
2ms |
get page messages: |
55ms |
get tp. blocked users: |
2ms |
others: | 15ms |
total: | 167ms |
0 / 0 |