Вход/Регистрация
C# 4.0 полное руководство - 2011
вернуться

Шилдт Герберт

Шрифт:

if(ok(indexl, index2)) {

ErrFlag = false;

return a[indexl, index2];

} else {

ErrFlag = true; return 0;

}

}

// Это аксессор set. set {

if(ok(indexl, index2)) {

a[indexl, index2] = value;

ErrFlag = false;

}

else ErrFlag = true;

}

}

// Возвратить логическое значение true, если // индексы находятся в установленных пределах, private bool ok(int indexl, int index2) {

•if (indexl >= 0 & indexl < rows & index2 >= 0 & index2 < cols) return true;

return false;

}

}

// Продемонстрировать применение двумерного индексатора, class TwoDIndexerDemo { static void Main {

FailSoftArray2D fs = new FailSoftArray2D(3, 5); int x;

// Выявить скрытые сбои.

Console.WriteLine("Скрытый сбой."); for (int i=0; i < 6; i++) fs[i, i]=i*10;

for(int i=0; i < 6; i++) {

x = f s [ i, i ] ;

if(x != -1) Console.Write (x + " ");

}

Console.WriteLine ;

// А теперь показать сбои.

Console.WriteLine("\пСбой с уведомлением об ошибках."); for(int i=0; i < 6; i++) {

fs[i,i] = i *10; if(fs.ErrFlag)

Console.WriteLine("fs[" + i + ", " + i + "] вне границ

}

for(int i=0; i < 6; i++) {

x = f s [ i, i ] ;

if(!fs.ErrFlag) Console.Write(x + " ");

else

Console.WriteLine("fs[" + i + ", " + i + "] вне границ");

}

}

}

Вот к какому результату приводит выполнение этого кода:

Скрытый сбой.

0 10 20 0 0 0

Сбой с уведомлением об ошибках.

fs[3, 3] вне границ

fs[4, 4] вне границ

fs[5, 5] вне границ

0 10 20 fs[3, 3] вне границ

fs[4, 4] вне границ

fs[5, 5] вне границ

Свойства

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

Свойства очень похожи на индексаторы. В частности, свойство состоит из имени и аксессоров get и set. Аксессоры служат для получения и установки значения переменной. Главное преимущество свойства заключается в том, что его имя может быть использовано в выражениях и операторах присваивания аналогично имени обычной переменной, но в действительности при обращении к свойству по имени автоматически вызываются его аксессоры get и set. Аналогичным образом используются аксессоры get и set индексатора.

Ниже приведена общая форма свойства:

ТИП имя{ *

get {

// код аксессора для чтения из поля

}

set {

// код аксессора для записи в поле

}

где тип обозначает конкретный тип свойства, например int, а имя — присваиваемое свойству имя. Как только свойство будет определено, любое обращение к свойству по имени приведет к автоматическому вызову соответствующего аксессора. Кроме того, аксессор set принимает неявный параметр value, который содержит значение, присваиваемое свойству.

  • Читать дальше
  • 1
  • ...
  • 137
  • 138
  • 139
  • 140
  • 141
  • 142
  • 143
  • 144
  • 145
  • 146
  • 147
  • ...

Ебукер (ebooker) – онлайн-библиотека на русском языке. Книги доступны онлайн, без утомительной регистрации. Огромный выбор и удобный дизайн, позволяющий читать без проблем. Добавляйте сайт в закладки! Все произведения загружаются пользователями: если считаете, что ваши авторские права нарушены – используйте форму обратной связи.

Полезные ссылки

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

Подпишитесь на рассылку: