В данном примере разрабатывается 4-разрядный целочисленный тип данных и для него определяется ряд операций. Вам, вероятно, известно, что на ранней стадии развития вычислительной техники широко применялся тип данных для обозначения 4-разрядных двоичных величин, называвшихся
В приведенном ниже примере программы тип полубайтовых данных реализуется с помощью классаNybble.В качестве базового для него используется типint,но с ограничением на хранение данных от 0 до 15. В классеNybbleопределяются следующие операторы.
• Сложение двух объектов типаNybble.
• Сложение значения типа int с объектом типа Nybble.
• Сложение объекта типаNybbleсо значением типаint.
• Операции сравнения: больше (>) и меньше (<).
• Операция инкремента.
• Преобразование значения типаintв объект типаNybble.
• Преобразование объекта типаNybbleв значение типаint.
Перечисленных выше операций достаточно, чтобы показать, каким образом тип классаNybbleинтегрируется в систему типов С#. Но для полноценной реализации этого типа данных придется определить все остальные доступные для него операции. Попробуйте сделать это сами в качестве упражнения.
Ниже полностью приводится классNybble,а также классNybbleDemo,демонстрирующий его применение.
// Создать полубайтовый тип 4-разрядных данных под названием Nybble.
using System;
// тип4-разрядных данных.
class Nybble {
int val; // базовый тип для хранения данных
public Nybble() { val =0; }
public Nybble(int i) { val = i;
val = val & OxF; // сохранить 4 младших разряда} •
// Перегрузить бинарный оператор + для сложения двух объектов типа Nybble, public static Nybble operator +(Nybble opl, Nybble op2)
{
Nybble result = new Nybble (); result.val = opl.val + op2.val;
result.val = result.val & OxF; // сохранить 4 младших разряда return result;
}
// Перегрузить бинарный оператор + для сложения
// объекта типа Nybble и значения типа int.
public static Nybble operator + (Nybble opl, int op2)
{
Nybble result = new Nybble (); result.val = opl.val + op2;
result.val = result.val & OxF; // сохранить 4 младших разряда return result;
}