» » » » Герберт Шилдт - C# 4.0 полное руководство - 2011


Авторские права

Герберт Шилдт - C# 4.0 полное руководство - 2011

Здесь можно скачать бесплатно "Герберт Шилдт - C# 4.0 полное руководство - 2011" в формате fb2, epub, txt, doc, pdf. Жанр: Прочая старинная литература. Так же Вы можете читать книгу онлайн без регистрации и SMS на сайте LibFox.Ru (ЛибФокс) или прочесть описание и ознакомиться с отзывами.
Герберт Шилдт - C# 4.0 полное руководство - 2011
Рейтинг:
Название:
C# 4.0 полное руководство - 2011
Издательство:
неизвестно
Год:
неизвестен
ISBN:
нет данных
Скачать:

99Пожалуйста дождитесь своей очереди, идёт подготовка вашей ссылки для скачивания...

Скачивание начинается... Если скачивание не началось автоматически, пожалуйста нажмите на эту ссылку.

Вы автор?
Жалоба
Все книги на сайте размещаются его пользователями. Приносим свои глубочайшие извинения, если Ваша книга была опубликована без Вашего на то согласия.
Напишите нам, и мы в срочном порядке примем меры.

Как получить книгу?
Оплатили, но не знаете что делать дальше? Инструкция.

Описание книги "C# 4.0 полное руководство - 2011"

Описание и краткое содержание "C# 4.0 полное руководство - 2011" читать бесплатно онлайн.








В приведенном ниже примере программы показано, как правильно реализовать логические операторы & и | в классе ThreeD, чтобы сделать доступными для применения укороченные логические операторы & & и | |.

/* Более•совершенный способ перегрузки логических операторов !,    | и & для объектов класса ThreeD.

В этом варианте укороченные логические операторы && и || становятся доступными для применения автоматически. */

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 ThreeD operator |(ThreeD opl, ThreeD op2)

{

else

return new ThreeD(0, 0, 0) ;

}

// Перегрузить логический оператор & для укороченного вычисления, public static ThreeD operator & (ThreeD opl, ThreeD op2)

{

if(    ((opl.x    !=    0)    &&    (opl.у    !=    0)    &&    (opl.z    !=    0))    &

((op2.x    !=    0)    &&    (op2.y    !=    0)    &&    (op2.z    !=    0))    )

return new ThreeD(1, 1, 1); else

return new ThreeD(0, 0, 0);

}

// Перегрузить логический оператор !. public static bool operator !(ThreeD op)

{

if(op) return false; else return true;

}

// Перегрузить оператор true.

public static bool operator true(ThreeD op) { if((op.x    != 0)    И    (op.у != 0)    ||    (op.z    !=    0))

return    true;    //    хотя бы одна координата    не равна нулю

else

return false;

}

// Перегрузить оператор false.

public static bool operator false(ThreeD op) { if((op.x    == 0)    &&    (op.y == 0) &&    (op.z    ==    0))

return    true;    //    все координаты    равны    нулю

else

return false;

}

// Ввести координаты X, Y, Z. public void Show()

{

Console.WriteLine(x + ", " + у + ", " + z) ;

}

}'

class TrueFalseDemo { static void Main() {

ThreeD a = new ThreeD(5, 6, 7);

ThreeD b = new ThreeD(10, 10, 10);

ThreeD с = new ThreeD(0, 0, 0) ;

Console.Write("Координаты точки a: ");

a.Show();

Console.Write("Координаты точки b: ");

b.Show();

Console.Write("Координаты точки с: ");

c.Show();

Console.WriteLine() ;

if (a) Console.WriteLine("Точка а истинна."); if(b) Console.WriteLine("Точка b истинна."); if(с) Console.WriteLine("Точка с истинна.");

if(!a) Console.WriteLine("Точка а ложна."); if(!b) Console.WriteLine("Точка b ложна."); if(!c) Console.WriteLine("Точка с ложна.");

Console.WriteLine ();

Console.WriteLine("Применение логических операторов & и |"); if(а & b) Console.WriteLine("а & b истинно."); else Console.WriteLine("а & b ложно.");

if(а & с) Console.WriteLine("а & с истинно."); else Console.WriteLine("а & с ложно.");

if(а | b) Console.WriteLine("а | b истинно."); else Console.WriteLine("а | b ложно.");

if(а | с) Console.WriteLine("а | с истинно."); else Console.WriteLine("а | с ложно.");

Console.WriteLine();

// А теперь применить укороченные логические операторы. Console.WriteLine("Применение укороченных" +

"логических операторов && и И"); if(а && b) Console.WriteLine("а && b истинно."); else Console.WriteLine("а && b ложно.");

if(а && с) Console.WriteLine("а && с истинно."); else Console.WriteLine("а && с ложно.");

if(а И b) Console.WriteLine ("а || b истинно."); else- Console.WriteLine("а || b ложно.");

if (а | | с) Console.WriteLine("а | | с истинно."); else Console.WriteLine("а || с ложно.");

}

}

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

Координаты точки а: 5, 6, 7 Координаты точки Ь: 10, 10, 10 Координаты точки с: 0, 0, 0

Точка а истинна Точка b истинна Точка с ложна.

Применение логических операторов & и | а & b истинно, а & с ложно, а | b истинно, а | с истинно.

Применение укороченных логических операторов && и || а && b истинно, а && с ложно, а И Ь истинно, а И с истинно.

Рассмотрим более подробно, каким образом реализуются логические операторы & и |. Они представлены в следующем фрагменте кода.

// Перегрузить логический оператор | для укороченного вычисления, public static ThreeD operator | (ThreeD opl, ThreeD op2)

{

else

return new ThreeD(0, 0, 0);

}

// Перегрузить логический оператор & для укороченного вычисления, public static ThreeD operator & (ThreeD opl, ThreeD op2)

{

if (    ((opl.x    !=    0)    &&    (opl.y    !=    0)    &&    (opl.z    !=    0))    &

((op2.x    !=    0)    &&    (op2.y    !=    0)    &&    (op2.z    !=    0))    )

return new ThreeD(1, 1,1); else

return new ThreeD (0, 0, 0);

Прежде всего обратите внимание на то, что методы обоих перегружаемых логических операторов теперь возвращают объект типа ThreeD. И особенно обратите внимание на то, как формируется этот объект. Если логическая операция дает истинный результат, то создается и возвращается истинный объект типа ThreeD, у которого хотя бы одна координата не равна нулю. Если же логическая операция дает ложный результат, то соответственно создается и возвращается ложный объект. Таким образом, результатом вычисления логического выражения а & b в следующем фрагменте кода:

if(а & b) Console.WriteLine("а & b истинно."); else Console.WriteLine("а & b ложно.");

является объект типа ThreeD, который в данном случае оказывается истинным. А поскольку операторы true и false уже определены, то созданный объект типа ThreeD подвергается действию оператора true и в конечном итоге возвращается результат типа bool. В данном случае он равен true, а следовательно, условный оператор if успешно выполняется.

Благодаря тому что все необходимые правила соблюдены, укороченные операторы становятся доступными для применения к объектам ThreeD. Они действуют следующим образом. Первый операнд проверяется с помощью операторного метода operator true (для оператора | |) или же с помощью операторного метода operator false (для оператора &&). Если удается определить результат данной операции, то соответствующий перегружаемый оператор (& или |) далее не выполняется. В противном случае перегружаемый оператор (& или | соответственно) используется для определения конечного результата. Следовательно, когда применяется укороченный логический оператор & & или I |, то соответствующий логический оператор & или | вызывается лишь в том случае, если по первому операнду невозможно определить результат вычисления выражения. В качестве примера рассмотрим следующую строку кода из приведенной выше программы.

if(а И с) Console.WriteLine("а || с истинно.");

В этой строке кода сначала применяется оператор true к объекту а. В данном случае объект а истинен, и поэтому использовать далее операторный метод | нет необходимости. Но если переписать данную строку кода следующим образом:

if(с И a) Console.WriteLine ("с || а истинно.");

то оператор true был бы сначала применен к объекту с, который в данном случае ложен. А это означает, что для определения истинности объекта а пришлось бы далее вызывать операторный метод |.

Описанный выше способ применения укороченных логических операторов может показаться, на первый взгляд, несколько запутанным, но если подумать, то в таком применении обнаруживается известный практический смысл. Ведь благодаря перегрузке операторов true и false для класса компилятор получает разрешение на применение укороченных логических операторов, не прибегая к явной их перегрузке. Это дает также возможность использовать объекты в условных выражениях. И вообще, логические операторы & и | лучше всего реализовывать полностью, если, конечно, не требуется очень узко направленная их реализация.

Операторы преобразования

Иногда объект определенного класса требуется использовать в выражении, включающем в себя данные других типов. В одних случаях для этой цели оказывается пригодной перегрузка одного или более операторов, а в других случаях — обыкновенное преобразование типа класса в целевой тип. Для подобных ситуаций в C# предусмотрена специальная разновидность операторного метода, называемая оператором преобразования.Такой оператор преобразует объект исходного класса в другой тип. Операторы преобразования помогают полностью интегрировать типы классов в среду программирования на С#, разрешая свободно пользоваться классами вместе с другими типами данных, при условии, что определен порядок преобразования в эти типы.

Существуют две формы операторов преобразования: явная и неявная. Ниже они представлены в общем виде:

public static explicit operator целевой_тип{исходный_тип v) {return значение;} public static implicit operator целевой_тип(исходный_тип v) {return значение;}


На Facebook В Твиттере В Instagram В Одноклассниках Мы Вконтакте
Подписывайтесь на наши страницы в социальных сетях.
Будьте в курсе последних книжных новинок, комментируйте, обсуждайте. Мы ждём Вас!

Похожие книги на "C# 4.0 полное руководство - 2011"

Книги похожие на "C# 4.0 полное руководство - 2011" читать онлайн или скачать бесплатно полные версии.


Понравилась книга? Оставьте Ваш комментарий, поделитесь впечатлениями или расскажите друзьям

Все книги автора Герберт Шилдт

Герберт Шилдт - все книги автора в одном месте на сайте онлайн библиотеки LibFox.

Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь.
Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.

Отзывы о "Герберт Шилдт - C# 4.0 полное руководство - 2011"

Отзывы читателей о книге "C# 4.0 полное руководство - 2011", комментарии и мнения людей о произведении.

А что Вы думаете о книге? Оставьте Ваш отзыв.