Публичная собственность и частные члены C # - PullRequest
2 голосов
/ 28 апреля 2009

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

Например

public int iMyInt { get; set; }

вместо

private int myint;
public int iMyInt { get { return myint; } set { myint = value; } }

Какие преимущества (или недостатки в этом отношении), помимо разрешения .NET управлять переменной / памятью под свойством?

Ответы [ 6 ]

11 голосов
/ 28 апреля 2009

Использование автоматических свойств (первый пример) требует меньше ввода.

Настоятельно рекомендуется иметь только открытые свойства, а не открытые поля. Многие свойства являются простыми обертками вокруг частных полей. Автоматические свойства экономят ваше время и силы на ручное создание свойства и вспомогательного поля.

Фактический код автоматических и ручных свойств для упомянутого вами простого случая должен быть почти одинаковым.

8 голосов
/ 28 апреля 2009

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

4 голосов
/ 28 апреля 2009

После компиляции в IL они будут почти идентичны.

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

Если мне позже понадобится добавить логику, легко переключиться на собственное вспомогательное поле, и никаких (внешних) последствий не будет.

1 голос
/ 28 апреля 2009

Мои личные предпочтения - автоматические свойства, если не требуется иное.

Преимущество использования автоматических свойств - это, конечно, лаконичность. Это занимает меньше места, легче читать, легче печатать.

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

Итак: когда вам нужно использовать приватную переменную поддержки, используйте «старый» метод. Когда вы этого не сделаете, используйте автоматическое свойство. Никогда не используйте публичное поле. Это просто сумасшедший разговор.

1 голос
/ 28 апреля 2009

Нет никакой разницы, так или иначе, пока вы не захотите, чтобы что-то произошло, когда свойство было получено или установлено.

Например, если вы хотите событие OnMyIntSet, вы не можете использовать автоматический синтаксис свойства.

0 голосов
/ 02 ноября 2010

Просто краткое замечание: автоматически реализованные свойства должны определять как получить, так и установить методы доступа.

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