Каковы преимущества использования свойств внутренне?

Инкапсуляция очевидно полезна и важна при доступе к участникам снаружи класса, но при обращении к переменным класса внутренне, лучше позвонить их членам парламента, не занимающим официального поста или использовать их методы считывания? Если Ваш метод считывания просто возвращает переменную, есть ли какое-либо различие в производительности?

5
задан dlras2 21 May 2010 в 19:15
поделиться

5 ответов

Значительной разницы в производительности быть не должно, и причина, по которой вы продолжаете использовать свойства, заключается в том, что в этом весь смысл инкапсуляции. Он поддерживает согласованность и контроль всех доступов этих частных участников. Поэтому, если вы хотите изменить средство получения / установки свойства, вам не нужно думать: «Нужно ли мне дублировать ту же функциональность где-нибудь в тех местах, где я решил напрямую получить доступ к закрытому члену?»

9
ответ дан 18 December 2019 в 07:08
поделиться

Преимущество будет в тех случаях, когда проверка должна выполняться на Get или Set. Это было бы в одном месте и всегда называлось.

Насколько мне известно (из других вопросов, заданных в Stack Overflow), когда Getter просто возвращает значение, сгенерированный код совпадает с прямым доступом к переменной.

4
ответ дан 18 December 2019 в 07:08
поделиться

Мне нравится использовать внутренние свойства для отложенной инициализации, когда в свойстве вы проверяете, что объект инициализирован. Это гарантирует, что я не использую переменные уровня класса, которые еще не были инициализированы.

TestClass1 _class1
internal TestClass1
{

get
{

    if (_class == null)
     _class = new TestClass1()

    return _class1

}

}
1
ответ дан 18 December 2019 в 07:08
поделиться

Доступ к полю напрямую или с помощью геттера обычно не имеет большого значения, если только ваш геттер не выполняет ленивую инициализацию или другую обработку. Так что это зависит от того, что делает геттер, но мое практическое правило - всегда использовать геттер, за исключением особых случаев.

Чтобы присвоить значение полю, не забывайте, что установщики часто включают код проверки или вызывают событие. В этом случае вы всегда должны использовать сеттер.

7
ответ дан 18 December 2019 в 07:08
поделиться

Разница в производительности незначительна, примерно в 98% случаев.

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

1
ответ дан 18 December 2019 в 07:08
поделиться
Другие вопросы по тегам:

Похожие вопросы: