Главная Случайная страница


Полезное:

Как сделать разговор полезным и приятным Как сделать объемную звезду своими руками Как сделать то, что делать не хочется? Как сделать погремушку Как сделать так чтобы женщины сами знакомились с вами Как сделать идею коммерческой Как сделать хорошую растяжку ног? Как сделать наш разум здоровым? Как сделать, чтобы люди обманывали меньше Вопрос 4. Как сделать так, чтобы вас уважали и ценили? Как сделать лучше себе и другим людям Как сделать свидание интересным?


Категории:

АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника






Выполнение операций со встроенными в C# типами данных





// Перегрузить бинарный оператор + для сложения объекта

// типа 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;

}

_____________________________________________________________________________________

// Перегрузить бинарный оператор + дважды:

// один раз - для сложения объектов класса ThreeD,

// а другой раз — для сложения объекта типа ThreeD и целого значения типа int.

using System;

// Класс для хранения трехмерных координат.

class ThreeD

{

int x, у, z; // трехмерные координаты

public ThreeD() { x = у = 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.x = op1.x + op2.x;

result.у = op1.у + op2.у;

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.у + op2;

result.z = op1.z + op2;

return result;

}

// Вывести координаты X, Y, Z.

public void Show()

{

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

}

}

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: ");

с.Show();

Console.WriteLine();

с = b + 10; // сложить объект типа ThreeD и целое значение типа int

Console.Write("Результат сложения b + 10: ");

с.Show();

}

}

 

Продемонстрированная выше перегрузка оператора +, безусловно, расширяет полезные функции класса ThreeD, тем не менее, она делает это не до конца. И вот почему. Метод operator +(ThreeD, int) позволяет выполнять операции, подобные следующей.

ob1 = оb2 + 10;

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

ob1 = 10 + оb2;

// Перегрузить бинарный оператор + трижды:

// один раз — для сложения объектов класса ThreeD,

// второй раз — для сложения объекта типа ThreeD и целого значения типа int,

// а третий раз — для сложения целого значения типа int и объекта типа ThreeD.

using System;

// Класс для хранения трехмерных координат.

class ThreeD

{

int x, y, z; // трехмерные координаты

public ThreeD() { x = y = z = 0; }

public ThreeD(int i, int j, int k) { x = i; y = j; z = k; }

// Перегрузить бинарный оператор + для сложения объектов класса ThreeD.

public static ThreeD operator +(ThreeD op1, ThreeD op2)

{

ThreeD result = new ThreeD();

/* Сложить координаты двух точек и возвратить результат. */

result.x = op1.x + op2.x;

result.y = op1.y + op2.y;

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.y = 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.y = op2.y + op1;

result.z = op2.z + op1;

return result;

}

// Вывести координаты X, Y, Z.

public void Show()

{

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

}

}

class ThreeDDemo

{

static void Main()

{

ThreeD a = new ThreeD(1, 2, 3);

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

ThreeD c = new ThreeD();

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

a.Show();

Console.WriteLine();

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

b.Show();

Console.WriteLine();

c = a + b; // сложить объекты класса ThreeD

Console.Write("Результат сложения a + b: ");

c.Show();

Console.WriteLine();

c = b + 10; // сложить объект типа ThreeD и целое значение типа int

Console.Write("Результат сложения b + 10: ");

c.Show();

Console.WriteLine();

c = 15 + b; // сложить целое значение типа int и объект типа ThreeD

Console.Write("Результат сложения 15 + b: ");

c.Show();

}

}

 







Date: 2015-09-02; view: 379; Нарушение авторских прав



mydocx.ru - 2015-2024 year. (0.008 sec.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав - Пожаловаться на публикацию