Страница 132 из 502
Ниже полностью приводится класс Nybble, а также класс NybbleDemo, демонстрирующий его применение.
<b>// Создать полубайтовый тип 4-разрядных данных </b>
<b>//под названием Nybble.</b>
<b>using System;</b>
<b>// тип4-разрядных данных.</b>
<b>class Nybble {</b>
<b> int val; // базовый тип для хранения данных</b>
<b> public Nybble() { val = 0; }</b>
<b> public Nybble(int i) {</b>
<b> val = i;</b>
<b> val = val & 0xF; // сохранить 4 младших разряда</b>
<b> }</b>
<b> // Перегрузить бинарный оператор + </b>
<b> //для сложения двух объектов типа Nybble, </b>
<b> public static Nybble operator +(Nybble op1, Nybble op2) {</b>
<b> Nybble result = new Nybble();</b>
<b> result.val = op1.val + op2.val;</b>
<b> result.val = result.val & 0xF; // сохранить 4 младших разряда </b>
<b> return result;</b>
<b> }</b>
<b> // Перегрузить бинарный оператор + для сложения</b>
<b> // объекта типа Nybble и значения типа int.</b>
<b> public static Nybble operator +(Nybble op1, int op2) {</b>
<b> Nybble result = new Nybble();</b>
<b> result.val = op1.val + op2;</b>
<b> result.val = result.val & 0xF; // сохранить 4 младших разряда</b>
<b> return result;</b>
<b> }</b>
<b> // Перегрузить бинарный оператор + для сложения </b>
<b> // значения типа int и объекта типа Nybble, </b>
<b> public static Nybble operator +(int op1, Nybble op2) {</b>
<b> Nybble result = new Nybble();</b>
<b> result.val = op1 + op2.val;</b>
<b> result.val = result.val & 0xF; // сохранить 4 младших разряда</b>
<b> return result;</b>
<b> }</b>
<b> // Перегрузить оператор ++.</b>
<b> public static Nybble operator ++(Nybble op) {</b>
<b> Nybble result = new Nybble();</b>
<b> result.val = op.val + 1;</b>
<b> result.val = result.val & 0xF; // сохранить 4 младших разряда</b>
<b> return result;</b>
<b> }</b>
<b> // Перегрузить оператор >.</b>
<b> public static bool operator >(Nybble op1, Nybble op2) {</b>
<b> if (op1.val > op2.val) return true;</b>
<b> else return false;</b>
<b> }</b>
<b> // Перегрузить оператор <.</b>
<b> public static bool operator <(Nybble op1, Nybble op2) {</b>
<b> if (op1.val < op2.val) return true; else return false;</b>
<b> }</b>
<b> // Преобразовать тип Nybble в тип int. </b>
<b> public static implicit operator int(Nybble op) {</b>
<b> return op.val;</b>
<b> }</b>
<b> // Преобразовать тип int в тип Nybble, </b>
<b> public static implicit operator Nybble(int op) {</b>
<b> return new Nybble(op);</b>
<b> }</b>
<b>}</b>
<b>class NybbleDemo {</b>
<b> static void Main() {</b>
<b> Nybble a = new Nybble(1);</b>
<b> Nybble b = new Nybble(10);</b>
<b> Nybble с = new Nybble();</b>
<b> int t;</b>
<b> Console.WriteLine("a: " + (int)a);</b>
<b> Console.WriteLine("b: " + (int)b);</b>
<b> if (a < b) Console.WriteLine("а меньше b");</b>
<b> // Сложить два объекта типа Nybble. </b>
<b> с = a + b;</b>
<b> Console.WriteLine("с после операции с = а + b: " + (int)с);</b>
<b> // Сложить значение типа int с объектом типа Nybble, </b>