* При перепечатке материалов ссылка на www.SeoLiga.ru обязательна!
Параметризованные свойства
8 февраля 2009
Как правило, разработчики создают свойства, возвращающие единственное значе- ние или объект. В Visual Basic .NET можно создавать свойства, которые принимают параметры. Как правило, такие свойства возвращают диапазон (или массив) значе- ний. Рассмотрим для примера объект Engine, представляющий двигатель («engine» по-английски — двигатель). У реального двигателя может быть несколько цилинд- ров, аналогично объект Engine включает несколько объектов Cylinder. Чтобы не пи- сать код для доступа к каждому из этих объектов, создают свойство Cylinder, полу- чающее или устанавливающее значение любого объекта Cylinder в зависимости от переданного параметра.
Объявление параметризованных свойств не отличается от такового для обычно- го свойства, единственное отличие — в объявлении параметра. Далее пишут код методов, получающих и устанавливающих значение свойства. Вот пример парамет- ризованного свойства, открывающего доступ к массиву объектов: Visual Basic .NET Создать массив для хранения значений свойства. Private mCylinders(7) As Cylinder Public Property Cylincfers(ByVal i As Integer) As Cylinder Get 1 Проверить параметр, переданный при обращении к свойству. If I > 7 Then MessageBox.Show("Property value out of range!") Exit Property End If 1 Если объект не существует, создать его. If niCylinders(i) Is Nothing Then mCylinders{i) - New Cylinder^) End If Return mCylinders(i) End Get Set(ByVal Value As Cylinder) ' Проверить параметр, переданный при обращении к свойству. If i > 7 Then MessageBox.Show("Property value out of range!") Exit Property End If mCylinders(i) - Value End Set End Property Visual C# не поддерживает параметризованные свойства, за исключением ин- дексаторов, о которых пойдет речь в следующем разделе.