2011-05-21 1 views
3

В VB.NET, каковы преимущества использования Property ключевого слова, а не:Каковы преимущества ключевого слова Property в VB.NET в использовании частного поля с геттерами и сеттерами?

Private MyProperty as String 
Public Sub setP(ByVal s as String) 
    MyProperty = s 
End Function 
Public Function getP() as String 
    return MyProperty 
End Function 

Исходя из Java Я предпочитаю использовать этот стиль, а не Property...End Property - есть ли причина не?

+0

Да, есть * каждый * причина не делать. Свойства - это идиоматические .NET-конструкции. Не записывайте Java-код в VB.NET (или C#, если на то пошло). Если вы хотите написать Java-код, напишите код на Java. –

ответ

9

Вы выполняете работу, выполняемую компилятором. Преимущества ключевого слова недвижимости:

  • Вы не можете случайно перепутать геттер и сеттер свойства типа, реальный вопрос в VB
  • Нет необходимости в неудобных получают и набор префиксов, компилятору какой из них вы хотите
  • Для привязки данных требуется свойство
  • Вы можете воспользоваться синтаксисом автоматического свойства, не нужно объявлять частное поле и только одну строку кода.

То же самое заявление в VS2010 с использованием синтаксиса автоматического свойства:

Public Property P As String 

Компилятор автоматически генерирует методы получения и установки и частного поля подложки. При необходимости вы реорганизовываете аксессоров.

+0

Это то, что я был после, спасибо – Flash

+0

Привет Ханс.Это касается только касательной, но есть ли случаи, когда вы хотите создать «интеллектуальное свойство», которое является частным, а не только частным полем? т. е. есть ли какой-нибудь случай, когда вы будете использовать 'Private Property независимо от того, что угодно 'или даже' Private Property .... '* с * явным getter и setter? Спасибо за любую помощь. –

2

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

.Net 4 также дает AutoImplement proeprties для VB.net here переменная личной поддержки wher ethe автоматически создается компилятором, в результате чего получается намного более чистый код и меньше кода плиты котла для записи.

4

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

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

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

Так что функционально они могут быть одинаковыми, но конвенция заключается в использовании свойств.

+0

Хорошая точка. Плюс, если вы используете XAML, привязки становятся намного проще с помощью свойств. –

2

Использование свойств позволяет редактору визуальной студии отображать/редактировать ее в сетке свойств. Если вы создаете элемент управления или dll, которые будут использовать другие, они используются для изменения свойств времени разработки в сетке свойств.

Также property-grid-control сможет выбрать это, если вы добавите элемент управления в форму, а затем установите свойство SelectedObject для сетки в экземпляр вашего класса/элемента управления.

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