Студопедия
rus | ua | other

Home Random lecture






Автоматически реализуемые свойства


Date: 2015-10-07; view: 343.


В Visual Basic свойства являются членами класса, которые вы используете, чтобы предоставить внешнему миру доступ к состоянию объекта. Типичное объявление свойства выглядит так:

Private _Country As String

 

Property Country As String

Get

Return _Country

End Get

Set(ByVal value As String)

_Country = value

End Set

End Property

Здесь приходится писать 10 строк кода, чтобы выразить на самом деле крайне простую концепцию. Учитывая, что в типичных объектах обычно содержатся десятки свойств, вы вынуждены включать в определения классов массу стереотипного кода. Чтобы облегчить подобные задачи, в Visual Basic 2010 введены автоматически реализуемые свойства (auto-implemented properties), которые позволяют определять простое свойство всего одной строкой кода:

Property Country As String

В этом случае компилятор автоматически генерирует аксессоры Getter и Setter, а также поддерживающие поля (backing fields). Имя поддерживающего поля всегда начинается со знака подчеркивания, за которым следует имя свойства (в нашем примере _Country). Это соглашение по именованию гарантирует совместимость на уровне двоичной сериализации на случай, если автоматически реализуемое свойство вдруг придется переделать в обычное. Если имя поддерживающего поля одно и то же, двоичная сериализация будет работать.

 

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

  • Основная часть .NET-инфраструктуры связывания с данными работает со свойствами, а не полями.
  • Интерфейс не может требовать наличия поля — такое возможно только для свойства.
  • Свойства обладают большей гибкостью, если впоследствии вам понадобится изменить бизнес-правила. Например, кто-то вводит правило, что телефонный номер должен состоять из 10 цифр. Если назначить его открытому полю, вы не сможете выполнять такую проверку. Переделка открытого поля в свойство является разрушающим изменением в таких случаях, как выполнение двоичной социализации и использование отражения.

<== previous lecture | next lecture ==>
Лямбды выражений | Инициализаторы набора
lektsiopedia.org - 2013 год. | Page generation: 0.164 s.