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