Читаем Полное руководство. С# 4.0 полностью

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

При выполнении этой программы получается следующий результат. а: 1 b: 10 а меньше b с после операции с = а + b: 11 а после операции а += 5: 6 Результат вычисления выражения а * 2 + 3: 15 Результат присваивания а = 19: 3 Управление циклом for с помощью объекта типа Nybble. 0 1 2 3 4 5 6 7 8 9

Большая часть функций класса Nybble не требует особых пояснений. Тем не менее необходимо подчеркнуть ту особую роль, которую операторы преобразования игра ют в интегрировании класса типа Nybble в систему типов С#. В частности, объект типа Nybble можно свободно комбинировать с данными других типов в арифметических вы ражениях, поскольку определены преобразования объекта этого типа в тип int и обрат но. Рассмотрим для примера следующую строку кода из приведенной выше программы. t = а * 2 + 3;

В этом выражении переменная t и значения 2 и 3 относятся к типу int, но в ней присутствует также объект типа Nybble. Оба типа оказываются совместимыми благо даря неявному преобразованию типа Nybble в тип int. В данном случае остальная часть выражения относится к типу int, поэтому объект а преобразуется в тип int с помощью своего метода преобразования.

А благодаря преобразованию типа int в тип Nybble значение типа int может быть присвоено объекту типа Nybble. Например, в следующей строке из приведенной выше программы: а = 19;

Перейти на страницу:

Похожие книги

Основы программирования в Linux
Основы программирования в Linux

В четвертом издании популярного руководства даны основы программирования в операционной системе Linux. Рассмотрены: использование библиотек C/C++ и стан­дартных средств разработки, организация системных вызовов, файловый ввод/вывод, взаимодействие процессов, программирование средствами командной оболочки, создание графических пользовательских интерфейсов с помощью инструментальных средств GTK+ или Qt, применение сокетов и др. Описана компиляция программ, их компоновка c библиотеками и работа с терминальным вводом/выводом. Даны приемы написания приложений в средах GNOME® и KDE®, хранения данных с использованием СУБД MySQL® и отладки программ. Книга хорошо структурирована, что делает обучение легким и быстрым. Для начинающих Linux-программистов

Нейл Мэтью , Ричард Стоунс , Татьяна Коротяева

ОС и Сети / Программирование / Книги по IT
97 этюдов для архитекторов программных систем
97 этюдов для архитекторов программных систем

Успешная карьера архитектора программного обеспечения требует хорошего владения как технической, так и деловой сторонами вопросов, связанных с проектированием архитектуры. В этой необычной книге ведущие архитекторы ПО со всего света обсуждают важные принципы разработки, выходящие далеко за пределы чисто технических вопросов.?Архитектор ПО выполняет роль посредника между командой разработчиков и бизнес-руководством компании, поэтому чтобы добиться успеха в этой профессии, необходимо не только овладеть различными технологиями, но и обеспечить работу над проектом в соответствии с бизнес-целями. В книге более 50 архитекторов рассказывают о том, что считают самым важным в своей работе, дают советы, как организовать общение с другими участниками проекта, как снизить сложность архитектуры, как оказывать поддержку разработчикам. Они щедро делятся множеством полезных идей и приемов, которые вынесли из своего многолетнего опыта. Авторы надеются, что книга станет источником вдохновения и руководством к действию для многих профессиональных программистов.

Билл де Ора , Майкл Хайгард , Нил Форд

Программирование, программы, базы данных / Базы данных / Программирование / Книги по IT
Программист-прагматик. Путь от подмастерья к мастеру
Программист-прагматик. Путь от подмастерья к мастеру

Находясь на переднем крае программирования, книга "Программист-прагматик. Путь от подмастерья к мастеру" абстрагируется от всевозрастающей специализации и технических тонкостей разработки программ на современном уровне, чтобы исследовать суть процесса – требования к работоспособной и поддерживаемой программе, приводящей пользователей в восторг. Книга охватывает различные темы – от личной ответственности и карьерного роста до архитектурных методик, придающих программам гибкость и простоту в адаптации и повторном использовании.Прочитав эту книгу, вы научитесь:Бороться с недостатками программного обеспечения;Избегать ловушек, связанных с дублированием знания;Создавать гибкие, динамичные и адаптируемые программы;Избегать программирования в расчете на совпадение;Защищать вашу программу при помощи контрактов, утверждений и исключений;Собирать реальные требования;Осуществлять безжалостное и эффективное тестирование;Приводить в восторг ваших пользователей;Формировать команды из программистов-прагматиков и с помощью автоматизации делать ваши разработки более точными.

А. Алексашин , Дэвид Томас , Эндрю Хант

Программирование / Книги по IT