-->

Полное руководство. С# 4.0

На нашем литературном портале можно бесплатно читать книгу Полное руководство. С# 4.0, Шилдт Герберт-- . Жанр: Программирование. Онлайн библиотека дает возможность прочитать весь текст и даже без регистрации и СМС подтверждения на нашем литературном портале bazaknig.info.
Полное руководство. С# 4.0
Название: Полное руководство. С# 4.0
Дата добавления: 16 январь 2020
Количество просмотров: 269
Читать онлайн

Полное руководство. С# 4.0 читать книгу онлайн

Полное руководство. С# 4.0 - читать бесплатно онлайн , автор Шилдт Герберт

В этом полном руководстве по C# 4.0 — языку программирования, разработанному специально для среды .NET, — детально рассмотрены все основные средства языка: типы данных, операторы, управляющие операторы, классы, интерфейсы, методы, делегаты, индексаторы, события, указатели, обобщения, коллекции, основные библиотеки классов, средства многопоточного программирования и директивы препроцессора. Подробно описаны новые возможности C#, в том числе PLINQ, библиотека TPL, динамический тип данных, а также именованные и необязательные аргументы. Это справочное пособие снабжено массой полезных советов авторитетного автора и сотнями примеров программ с комментариями, благодаря которым они становятся понятными любому читателю независимо от уровня его подготовки.Книга рассчитана на широкий круг читателей, интересующихся программированием на C#.

В данной книге вы найдете:- Полное описание средств языка C#- Подробное рассмотрение новых средств в версии C# 4.0, в том числе PLINQ, библиотеку TPL, именованные и необязательные аргументы, динамический тип данных и многое другое- Сотни простых и понятных примеров программ с комментариями.- Самый полный источник информации по C#Благодаря поддержке параллельного языка интегрированных запросов (PLINQ) и библиотеки распараллеливания задач (TPL) версия 4.0 стала новой вехой в программировании на C#, и поэтому Герберт Шилдт, автор лучших книг по программированию, обновил и расширил свое классическое руководство, чтобы охватить в нем эти и другие нововведения. В книге подробно описываются языковые средства C#, даются профессиональные рекомендации и приводятся сотни примеров программ, охватывающих все аспекты программирования на C#, включая синтаксис, ключевые слова и основные библиотеки, не говоря уже о таких новшествах, как PLINQ, TPL, динамический тип данных, а также именованные и необязательные аргументы.Это необходимое каждому программирующему на C# справочное руководство написано простым и доступным языком, благодаря которому Герберт Шилдт стал таким популярным. В книге найдут ответы на насущные вопросы по C# как начинающие, так и опытные программисты.

Внимание! Книга может содержать контент только для совершеннолетних. Для несовершеннолетних чтение данного контента СТРОГО ЗАПРЕЩЕНО! Если в книге присутствует наличие пропаганды ЛГБТ и другого, запрещенного контента - просьба написать на почту [email protected] для удаления материала

1 ... 55 56 57 58 59 60 61 62 63 ... 188 ВПЕРЕД
Перейти на страницу:

class ThreeDDemo { static void Main() { ThreeD a = new ThreeD(1, 2, 3); ThreeD b = new ThreeD(10, 10, 10); ThreeD с = new ThreeD(); Console.Write("Координаты точки a; "); a.Show(); Console.WriteLine(); Console.Write("Координаты точки b: "); b.Show(); Console.WriteLine(); с = a + b; // сложить объекты класса ThreeD Console.Write("Результат сложения a + b: "); c.Show(); Console.WriteLine(); c = b + 10; // сложить объект типа ThreeD и целое значение типа int Console.Write("Результат сложения b + 10: "); с.Show();}

}При выполнении этого кода получается следующий результат.

Координаты точки а: 1, 2, 3Координаты точки b: 10, 10, 10Результат сложения а + b: 11, 12, 13Результат сложения b + 10: 20, 20, 20Как подтверждает приведенный выше результат, когда оператор + применяется кдвум объектам класса ThreeD, то складываются их координаты. А когда он применяется к объекту типа ThreeD и целому значению, то координаты этого объекта увеличиваются на заданное целое значение.Продемонстрированная выше перегрузка оператора +, безусловно, расширяет полезные функции класса ThreeD, тем не менее, она делает это не до конца. И вот почему. Метод operator+(ThreeD, int) позволяет выполнять операции, подобныеследующей.

ob1 = оb2 + 10;Но, к сожалению, он не позволяет выполнять операции, аналогичные следующей.

ob1 = 10 + оb2;Дело в том, что второй целочисленный аргумент данного метода обозначает правыйоперанд бинарного оператора +, но в приведенной выше строке кода целочисленныйаргумент указывается слева. Для того чтобы разрешить выполнение такой операциисложения, придется перегрузить оператор + еще раз. В этом случае первый параметроператорного метода должен иметь тип int, а второй параметр — тип ThreeD. Такимобразом, в одном варианте метода operator+() выполняется сложение объекта типаThreeD и целого значения, а во втором — сложение целого значения и объекта типаThreeD. Благодаря такой перегрузке оператора + (или любого другого бинарного оператора) допускается появление встроенного типа данных как с левой, так и с правойстороны данного оператора. Ниже приведен еще один вариант класса ThreeD, в котором бинарный оператор + перегружается описанным выше образом.

// Перегрузить бинарный оператор + трижды:// один раз — для сложения объектов класса ThreeD,// второй раз — для сложения объекта типа ThreeD и целого значения типа int,// а третий раз — для сложения целого значения типа int и объекта типа ThreeD.using System;

// Класс для хранения трехмерных координат.class ThreeD { int х, у, z; // трехмерные координаты public ThreeD() { x = y = z = 0; } public ThreeD(int i, int j, int k) { x = i; у = j; z = k; } // Перегрузить бинарный оператор + для сложения объектов класса ThreeD. public static ThreeD operator +(ThreeD op1, ThreeD op2) { ThreeD result = new ThreeD(); / Сложить координаты двух точек и возвратить результат. / result.х = op1.x + ор2.х; result.у = op1.y + ор2.у; result.z = op1.z + op2.z; return result; } // Перегрузить бинарный оператор + для сложения // объекта типа ThreeD и целого значения типа int. public static ThreeD operator +(ThreeD op1, int op2) { ThreeD result = new ThreeD(); result.x = op1.x + op2; result.у = op1.y + op2; result.z = op1.z + op2; return result; } // Перегрузить бинарный оператор + для сложения // целого значения типа int и объекта типа ThreeD. public static ThreeD operator +(int op1, ThreeD op2) { ThreeD result = new ThreeD(); result.x = op2.x + op1; result.у = op2.y + op1; result.z = op2.z + op1; return result; } // Вывести координаты X, Y, Z. public void Show() { Console.WriteLine(x + ", " + у + ", " + z); }}

class ThreeDDemo { static void Main() { ThreeD a = new ThreeD(l, 2, 3); ThreeD b = new ThreeD(10, 10, 10); ThreeD с = new ThreeD(); Console.Write("Координаты точки a: "); a.Show(); Console.WriteLine(); Console.Write("Координаты точки b: "); b.Show(); Console.WriteLine(); с = a + b; // сложить объекты класса ThreeD Console.Write("Результат сложения a + b: "); c.Show(); Console.WriteLine(); c = b + 10; // сложить объект типа ThreeD и целое значение типа int Console.Write("Результат сложения b + 10: "); с.Show(); Console.WriteLine(); с = 15 + b; // сложить целое значение типа int и объект типа ThreeD Console.Write("Результат сложения 15 + b: "); с.Show();}

}Выполнение этого кода дает следующий результат.

Координаты точки а: 1, 2, 3Координаты точки b: 10, 10, 10Результат сложения а + b: 11, 12, 13Результат сложения b + 10: 20, 20, 20Результат сложения 15 + b: 25, 25, 25### Перегрузка операторов отношенияОператоры отношения, например == и <, могут также перегружаться, причемочень просто. Как правило, перегруженный оператор отношения возвращает логическое значение true и false. Это вполне соответствует правилам обычногоприменения подобных операторов и дает возможность использовать их перегружаемые разновидности в условных выражениях. Если же возвращается результатдругого типа, то тем самым сильно ограничивается применимость операторов отношения.Ниже приведен очередной вариант класса ThreeD, в котором перегружаютсяоператоры < и >. В данном примере эти операторы служат для сравнения объектовThreeD, исходя из их расстояния до начала координат. Один объект считается большедругого, если он находится дальше от начала координат. А кроме того, один объектсчитается меньше другого, если он находится ближе к началу координат. Такой вариант реализации позволяет, в частности, определить, какая из двух заданных точек находится на большей сфере. Если же ни один из операторов не возвращает логическоезначение true, то обе точки находятся на одной и той же сфере. Разумеется, возможныи другие алгоритмы упорядочения.

// Перегрузить операторы < и >.using System;

// Класс для хранения трехмерных координат.class ThreeD { int х, у, z; // трехмерные координаты public ThreeD() { х = у = z = 0; } public ThreeD(int i, int j, int k) { x = i; у = j; z = k; } // Перегрузить оператор <. public static bool operator <(ThreeD op1, ThreeD op2) { if(Math.Sqrt(op1.x op1.x + op1.y op1.y + op1.z op1.z) < Math.Sqrt(op2.x op2.x + op2.у op2.y + op2.z op2.z)) return true; else return false; } // Перегрузить оператор >. public static bool operator >(ThreeD op1, ThreeD op2) { if(Math.Sqrt(op1.x op1.x + op1.y op1.y + op1.z op1.z) > Math.Sqrt(op2.x op2.x + op2.у op2.у + op2.z op2.z)) return true; else return false; } // Вывести координаты X, Y, Z. public void Show() { Console.WriteLine(x + ", " + у + ", " + z); }}

class ThreeDDemo { static void Main() { ThreeD a = new ThreeD(5, 6, 7); ThreeD b = new ThreeD(10, 10, 10); ThreeD с = new ThreeD(1, 2, 3); ThreeD d = new ThreeD(6, 7, 5); Console.Write("Координаты точки a: "); a.Show(); Console.Write("Координаты точки b: "); b.Show(); Console.Write("Координаты точки с: "); c.Show(); Console.Write("Координаты точки d: "); d.Show(); Console.WriteLine(); if(а > с) Console.WriteLine("а > с истинно"); if(а < с) Console.WriteLine("а < с истинно"); if(а > b) Console.WriteLine("а > b истинно"); if(а < b) Console.WriteLine("а < b истинно"); if(а > d) Console.WriteLine("а > d истинно"); else if(а < d) Console.WriteLine("a < d истинно"); else Console.WriteLine("Точки a и d находятся на одном расстоянии " + "от начала отсчета");}

}Вот к какому результату приводит выполнение этого кода.

Координаты точки а: 5, 6, 7Координаты точки b: 10, 10, 10Координаты точки с: 1, 2, 3Координаты точки d: 6, 7, 5а > с истинноа < b истинноТочки a и d находятся на одном расстоянии от начала отсчетаНа перегрузку операторов отношения накладывается следующее важное ограничение: они должны перегружаться попарно. Так, если перегружается оператор <, тоследует перегрузить и оператор >, и наоборот. Ниже приведены составленные в парыперегружаемые операторы отношения.==!=<><=>=

1 ... 55 56 57 58 59 60 61 62 63 ... 188 ВПЕРЕД
Перейти на страницу:
Комментариев (0)
название