Console.WriteLine("Управление циклом for " +
"с помощью объекта типа Nybble."); for(а =0; а < 10; а++)
Console.Write((int) а + " ");
Console.WriteLine;
}
}
При выполнении этой программы получается следующий результат.
а: 1 Ь: 10
а меньше b
с после операции с = а + Ь: 11 а после операции а += 5: 6
Результат вычисления выражения а * 2 + 3: 15 Результат присваивания а = 19: 3
Управление циклом for с помощью объекта типа Nybble.
0123456789
Большая часть функций класса Nybble не требует особых пояснений. Тем не менее необходимо подчеркнуть ту особую роль, которую операторы преобразования играют в интегрировании класса типа Nybble в систему типов С#. В частности, объект типа Nybble можно свободно комбинировать с данными других типов в арифметических выражениях, поскольку определены преобразования объекта этого типа в тип int и обратно. Рассмотрим для примера следующую строку кода из приведенной выше программы.
t = а * 2 + 3;
В этом выражении переменнаяtи значения2и3относятся к типуint,но в ней присутствует также объект типаNybble.Оба типа оказываются совместимыми благодаря неявному преобразованию типаNybbleв типint.В данном случае остальная часть выражения относится к типуint,поэтому объектапреобразуется в типintс помощью своего метода преобразования.
А благодаря преобразованию типаintв типNybbleзначение типаintможет быть присвоено объекту типаNybble.Например, в следующей строке из приведенной выше программы:
а = 19;
сначала выполняется оператор Преобразования типаintв типNybble.Затем создается новый объект типаNybble,в котором сохраняются 4 младших разряда целого значения 19, а по существу, число 3, поскольку значение 19 превышает диапазон представления чисел для типаNybble.Далее этот объект присваивается переменной экземпляраа.Без операторов преобразования подобные выражения были бы просто недопустимы.
Кроме того, преобразование типаNybbleв типNybbleиспользуется в циклеfor.Без такого преобразования организовать столь простой циклforбыло бы просто невозможно.
ПРИМЕЧАНИЕ
В качестве упражнения попробуйте создать вариант полубайтового типа Nybble, предотвращающий переполнение, если присваиваемое значение оказывается за пределами допустимого диапазона чисел. Для этой цели лучше всего сгенерировать исключение. (Подробнее об исключениях — в главе 13.)
ГЛАВА 10 Индексаторы и свойства
В этой главе рассматриваются две особые и тесно связанные друг с другом разновидности членов класса: индексаторы и свойства. Каждый из них по-своему расширяет возможности класса, способствуя более полной его интеграции в систему типов C# и повышая его гибкость.