Разве автоматические свойства в C # не вызывают перевес? - PullRequest
2 голосов
/ 20 декабря 2011

Когда у меня есть автоматические свойства, и я пытаюсь получить доступ к нему из своего класса, это кажется непроизводительным расходом, потому что я использую функцию для доступа к члену моего класса вместо простого доступа к нему напрямую.

Если это правильно, может быть, я должен рассмотреть возможность не использовать автоматические свойства в таких случаях?

Ответы [ 4 ]

5 голосов
/ 20 декабря 2011

Вы измерили какие-либо теоретические издержки и обнаружили, что они значительны?Это ключ к принятию решений, основанных на производительности.

В этом случае я бы полностью ожидал, что JIT встроит автоматически реализуемые свойства, снимая любые потери производительности.(Кажется, я помню случай с float / double, где этот не был случаем, но это было некоторое время назад - и даже тогда накладные расходы были довольно небольшими.)

3 голосов
/ 20 декабря 2011

Автоматические свойства ничем не отличаются от обычных свойств в этом отношении.

Не беспокойся об этом ; JITter, как правило, в любом случае встроит методы свойства.

2 голосов
/ 20 декабря 2011

Вы правы в этом.Однако некоторым механизмам нужны свойства, например, XML-сериализатор не будет сериализовать открытые члены ...

Другое дело - инкапсуляция - вы никогда не знаете заранее, каков конечный пункт назначения каждого свойства вашего класса, поэтому еслисначала вы создаете его как свойство, позже можете перейти к реализации set / get.

0 голосов
/ 20 декабря 2011

Если вы следуете объектно-ориентированным принципам, вы нарушите принцип инкапсуляции, предоставив прямой доступ своим внутренним членам.Механизм Property (методы получения и установки) обеспечивает надлежащий доступ к этим элементам, защищая внутренние элементы от прямого доступа.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...