Я думаю, он настаивает на том, что, поскольку свойство может выполнять любой произвольный код, вызывающий код не должен предполагать, что оно завершится немедленно.
Если все свойство выполняетвозвращает поле, тогда его тело метода будет на самом деле встроено JIT-компилятором, и это будет так же быстро, как и доступ к полю.Так что не то, чтобы свойства были как-то медленнее;это то, что они черные ящики.Если вы не знаете, как реализовано свойство, вы не можете делать предположения о его быстром возвращении.
(При этом медленное свойство будет явным нарушением .NET FrameworkРуководство по проектированию , а именно: «Используйте метод, а не свойство, [если] операция на несколько порядков медленнее, чем набор полей».)
Что касается его предложениявместо того, чтобы использовать методы, я не могу понять это.Свойства являются методами: свойство getter является методом (обычно называемым get_PropertyName
), а setter свойства является методом (set_PropertyName
), а код, который читает свойство, компилируется в код, который создаетвызов метода к get_PropertyName
.Нет ничего особенного, что сделало бы свойство медленнее, чем метод.