Вход/Регистрация
C# для профессионалов. Том II
вернуться

Ватсон Карли

Шрифт:

 }

}

Здесь выделим использование метода

AddWheel
, что удовлетворяет рекомендациям об альтернативных сигнатурах. Язык CLS, который не поддерживает перезагрузку операторов, может получить доступ к той же функциональности сложения с помощью этого метода. Фрагмент кода ниже показывает, как может использоваться этот тип данных значения:

public static void Main(String[] args) {

 Wheels front = 2; // неявное преобразование

 Wheels back = 4; // неявное преобразование

 Wheels total = front + back; // перезагруженная версия сложения

 Console.WriteLine(total);

}

Компиляция и выполнение этого кода дадут в результате 6. Можно также изменить тип

Car
, чтобы разрешить сложение и вычитание из него
Wheels
. Следующий код показывает изменения, сделанные в классе
Car
:

public class Car {

 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 ]

  • Читать дальше
  • 1
  • ...
  • 257
  • 258
  • 259
  • 260
  • 261
  • 262
  • 263
  • 264
  • 265
  • 266
  • 267
  • ...

Ебукер (ebooker) – онлайн-библиотека на русском языке. Книги доступны онлайн, без утомительной регистрации. Огромный выбор и удобный дизайн, позволяющий читать без проблем. Добавляйте сайт в закладки! Все произведения загружаются пользователями: если считаете, что ваши авторские права нарушены – используйте форму обратной связи.

Полезные ссылки

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

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