Deutsch

Задачка

20.05.25 23:56
Re: Задачка
 
alex445 патриот
в ответ Отпускник 27.03.25 21:27, Последний раз изменено 21.05.25 00:03 (alex445)

Ладно, отвечу тут некоторых охламонам. ))

Оператор присваивания в сишарпе возвращает результат правого выражения. Причём это написано в МСДНе в одном месте парой слов, и больше нигде не упоминается. Или не в МСДНе, а в спецификации языка - не помню. Но важно, что про многие другие вещи талдычат из статьи в статью, и они оскомину набили, а вот этот факт фиг раскопаешь ещё. И он не совсем самоочевиден. Ну а return соответственно вернёт результат оператора присваивания - т.е. его правого выражения. А результат левого будет похерен и забыт где-то в стеке, после чего удалён сборщиком мусора. Поэтому неважно, что такое Validate, и что стоит в геттере.


Я с этим столкнулся, когда писал код типа такого


result = ...

return result;


И решил, чего это я лишние строчки пишу - дай-ка отрефакторю для компактности. И сделал


return result = ...


Только вот если result не просто переменная, а свойство какое, то это уже не рефакторинг, а изменение логики. Неправильное.

 

Перейти на