2009-04-27 2 views
2

В чем преимущества использования открытых свойств вместо использования открытого свойства для доступа к частной переменной?Публичные свойства и частные члены C#

Например

public int iMyInt { get; set; } 

вместо

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

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

ответ

11

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

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

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

+2

Также полезно использовать общедоступные свойства, если вы хотите воспользоваться DataBinding также – RobS

1

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

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

4

Эти два будут почти идентичными после сложения IL.

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

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

8

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

+2

+1, отличная точка. Свойства с их защитными полями легко приводят к большому количеству кодовых табличек, которые отвлекают от «важных» частей вашего класса. – Michael

1

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

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

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

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

0

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

Смежные вопросы