Чтение онлайн

на главную

Жанры

C# для профессионалов. Том II

Ватсон Карли

Шрифт:

 int wheels, doors, headlights;

 public Car(int wheels, int doors, int headlights) {

this.wheels = wheels;

this.doors = doors;

this.headlights = headlights;

 }

 public Car AddWheel(Two.Wheels w) {

this.wheels += w.Number;

return this;

 }

 internal int Wheels {

set {

wheels = value;

}

get {

return wheels;

}

 }

 /// <summary>

 ///
выполняет операцию сложения на Wheel и Car

 /// </summary>

 /// <param name="c1">car</param>

 /// <param name="w1">wheel</param>

 /// <returns></returns>

 public static Car operator +(Car c1, Wheels w1) {

c1.Wheels += w1.Number;

return c1;

 }

 /// <summary>

 /// выполняет операцию вычитания на Wheel и Car

 /// </summary>

 /// <param name="c1">car</param>

 /// <param name="w1">wheel</param>

 /// <returns></returns>

 public static Car operator -(Car c1, Wheels w1) {

c1.Wheels -= w1.Number;

return c1;

 }

 public override string ToString {

return

"[wheels = " + wheels + "| doors = " + doors + "|"

+ " headlights = " + headlights + "]";

 }

}

В класс

Car
также был добавлен метод
AddWheel
. Представленный далее фрагмент кода проверяет функциональность, только что добавленную в
Car
:

public static void Main(String[] args) {

 Wheels front = 2;

 Wheels back = 4;

 Wheels total = front + back;

 Car greenFordExpedition = new Car(0, 4, 2);

 Console.WriteLine("initial:\t" + greenFordExpedition);

 greenFordExpedition += total;

 Console.WriteLine("after add:\t" + greenFordExpedition);

 greenFordExpedition -= front;

 Console.WriteLine("after subtract:\t" + greenFordExpedition);

}

Компиляция

и выполнение этого кода создадут приведенные ниже результаты:

initial: CAR-[wheels = 0| doors = 4| headlights = 2 ]

after add: CAR-[wheels = 6| doors = 4| headlights = 2 ]

after subtract: CAR-[wheels = 4| doors = 4| headlights = 2 ]

sizeof и typeof

Так как Java не имеет других типов данных значений, кроме примитивных, размер которых всегда известен, то реального применения для оператора

sizeof
нет. В C# типы данных значений охватывают примитивные типы, а также структуры и перечисления. Конечно, как и в Java, размер примитивных типов известен. Однако необходимо знать, сколько пространства занимает тип
struct
или
enum
, для чего служит оператор
sizeof
. Синтаксис достаточно простой:
sizeof(<Value Type>)
, где
<Value Type>
будет
struct
или
enum
. Необходимо отметить один момент при использовании оператора
sizeof
— он может использоваться только в ненадежном контексте. Оператор
sizeof
не может быть перезагружен.

Оператор

typeof
используется для получения объекта типа экземпляра типа без создания экземпляра типа. В Java каждый тип имеет переменную класса
public static
, которая возвращает дескриптор объекта
Class
, ассоциированный с этим классом. Оператор
typeof
предоставляет функциональность этого типа. Так же как в случае
sizeof
, синтаксис будет очень простым:
typeof(<Type>)
, где
<Type>
является любым типом, определенным пользователем, который вернет объект типа этого типа.

Делегаты

Делегаты являются членами пространства имен, которые инкапсулируют ссылку на метод внутри объекта делегата. Объект делегата может затем передаваться в код, вызывающий указанный метод, не зная во время компиляции, какой метод будет вызван. Красоту, мощь и гибкость делегатов можно увидеть только с помощью примера. Давайте посмотрим, как работают делегаты:

namespace Samples {

 using System;

 using System.Collections;

 public delegate void TestDelegate(string k); // определяет делегата,

// который получает строку в качестве аргумента

 public class Sample {

public Sample {}

public void test(string i) {

Console.WriteLine(i + " has been invoked.");

}

public void text2(string j) {

Console.WriteLine("this is another way to invoke {0}" + j);

Поделиться:
Популярные книги

Неудержимый. Книга XII

Боярский Андрей
12. Неудержимый
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Неудержимый. Книга XII

Мастер 5

Чащин Валерий
5. Мастер
Фантастика:
попаданцы
аниме
5.00
рейтинг книги
Мастер 5

Идущий в тени 5

Амврелий Марк
5. Идущий в тени
Фантастика:
фэнтези
рпг
5.50
рейтинг книги
Идущий в тени 5

Три `Д` для миллиардера. Свадебный салон

Тоцка Тала
Любовные романы:
современные любовные романы
короткие любовные романы
7.14
рейтинг книги
Три `Д` для миллиардера. Свадебный салон

Проклятый Лекарь. Род II

Скабер Артемий
2. Каратель
Фантастика:
городское фэнтези
попаданцы
5.00
рейтинг книги
Проклятый Лекарь. Род II

Вальдиры миры. Кроу-3

Михайлов Дем Алексеевич
3. Кроу
Фантастика:
фэнтези
рпг
8.38
рейтинг книги
Вальдиры миры. Кроу-3

Новый Рал 8

Северный Лис
8. Рал!
Фантастика:
попаданцы
аниме
5.00
рейтинг книги
Новый Рал 8

Приручитель женщин-монстров. Том 7

Дорничев Дмитрий
7. Покемоны? Какие покемоны?
Фантастика:
юмористическое фэнтези
аниме
5.00
рейтинг книги
Приручитель женщин-монстров. Том 7

Системный Нуб

Тактарин Ринат
1. Ловец душ
Фантастика:
боевая фантастика
рпг
5.00
рейтинг книги
Системный Нуб

Объединитель

Астахов Евгений Евгеньевич
8. Сопряжение
Фантастика:
боевая фантастика
постапокалипсис
рпг
5.00
рейтинг книги
Объединитель

Жребий некроманта. Надежда рода

Решетов Евгений Валерьевич
1. Жребий некроманта
Фантастика:
фэнтези
попаданцы
6.50
рейтинг книги
Жребий некроманта. Надежда рода

Мимик нового Мира 7

Северный Лис
6. Мимик!
Фантастика:
юмористическое фэнтези
постапокалипсис
рпг
5.00
рейтинг книги
Мимик нового Мира 7

Академия

Кондакова Анна
2. Клан Волка
Фантастика:
боевая фантастика
5.40
рейтинг книги
Академия

Приручитель женщин-монстров. Том 2

Дорничев Дмитрий
2. Покемоны? Какие покемоны?
Фантастика:
юмористическое фэнтези
аниме
5.00
рейтинг книги
Приручитель женщин-монстров. Том 2