Полезное:
Как сделать разговор полезным и приятным
Как сделать объемную звезду своими руками
Как сделать то, что делать не хочется?
Как сделать погремушку
Как сделать так чтобы женщины сами знакомились с вами
Как сделать идею коммерческой
Как сделать хорошую растяжку ног?
Как сделать наш разум здоровым?
Как сделать, чтобы люди обманывали меньше
Вопрос 4. Как сделать так, чтобы вас уважали и ценили?
Как сделать лучше себе и другим людям
Как сделать свидание интересным?
Категории:
АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника
|
Перегрузка операторов отношенияОператоры отношения, например == и <, могут также перегружаться, причем очень просто. Как правило, перегруженный оператор отношения возвращает логическое значение true и false. //перегрузить операторы < and >. 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; } //прегрузить оператор <. 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.y * 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.y * op2.y + op2.z * op2.z)) return true; else return false; } //вывести координаты X, Y, Z. public void Show() { Console.WriteLine(x + ", " + y + ", " + z); } } class ThreeDDemo { static void Main() { ThreeD a = new ThreeD(5, 6, 7); ThreeD b = new ThreeD(10, 10, 10); ThreeD c = 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: "); c.Show(); Console.Write("Координаты точки d: "); d.Show(); Console.WriteLine(); if (a > c) Console.WriteLine("a > c true"); if (a < c) Console.WriteLine("a < c thre"); if (a > b) Console.WriteLine("a > b true"); if (a < b) Console.WriteLine("a < b true"); if (a > d) Console.WriteLine("a > d true"); else if (a < d) Console.WriteLine("a < d true"); else Console.WriteLine("Точки a и d находятся на одном расстоянии от начала отсчета"); } } На перегрузку операторов отношения накладывается следующее важное ограничение: они должны перегружаться попарно. Так, если перегружается оператор <, то следует перегрузить и оператор >, и наоборот. Ниже приведены составленные в пары перегружаемые операторы отношения. ==!= < > <= >= И еще одно замечание: если перегружаются операторы == и!=, то для этого обычно требуется также переопределить методы Object.Equals() и Object.GetHashCode(). Эти методы и способы их переопределения подробнее рассматриваются в главе 11.
|