сначала выполняется оператор преобразования типа int
в тип Nybble
. Затем создается новый объект типа Nybble
, в котором сохраняются 4 младших разряда целого значения 19, а по существу, число 3, поскольку значение 19 превышает диапазон представления чисел для типа Nybble
. Далее этот объект присваивается переменной экземпляра а. Без операторов преобразования подобные выражения были бы просто недопустимы.
Кроме того, преобразование типа Nybble
в тип Nybble
используется в цикле for
. Без такого преобразования организовать столь простой цикл for было бы просто невозможно.
--------------------------------
ПРИМЕЧАНИЕ
В качестве упражнения попробуйте создать вариант полубайтового типа Nybble, предотвращающий переполнение, если присваиваемое значение оказывается за пределами допустимого диапазона чисел. Для этой цели лучше всего сгенерировать исключение. (Подробнее об исключениях — в главе 13.)
--------------------------------
ГЛАВА 10 Индексаторы и свойства
В этой главе рассматриваются две особые и тесно связанные друг с другом разновидности членов класса: индексаторы и свойства. Каждый из них по-своему расширяет возможности класса, способствуя более полной его интеграции в систему типов C# и повышая его гибкость.
В частности, индексаторы предоставляют механизм для индексирования объектов подобно массивам, а свойства — рациональный способ управления доступом к данным экземпляра класса. Эти члены класса тесно связаны друг с другом, поскольку оба опираются на еще одно доступное в C# средство: аксессор.
Индексаторы
Как вам должно быть уже известно, индексирование массива осуществляется с помощью оператора [ ].
Рассмотрим сначала одномерные индексаторы.
Ниже приведена общая форма одномерного индексатора:
тип_элемента this[int индекс] {
// Аксессор для получения данных, get {
// Возврат значения, которое определяет индекс.
}
// Аксессор для установки данных, set {
// Установка значения, которое определяет индекс.
}
}
где
В теле индексатора определены два аксессора (т.е. средства доступа к данным): get
и set
. Аксессор подобен методу, за исключением того, что в нем не объявляется тип возвращаемого значения или параметры. Аксессоры вызываются автоматически при использовании индексатора, и оба получаютset
и устанавливается элемент, на который указывает параметр get
и возвращается значение, соответствующее параметру set
получает неявный параметр value, содержащий значение, присваиваемое по указанному индексу.