Операторы сравнения
Операторы operator < и operator >
объявляют парой: если есть один, нужен второй.
Аналогично парой идут operator <= и
operator >=. Перегрузки возвращают
bool и обычно сравнивают поля или
составные части объекта.
Синтаксис
public static bool operator <(Тип left, Тип right)
public static bool operator >(Тип left, Тип right)
Пример
Давайте проверим, что первый ранг больше второго:
using System;
class Rank
{
public int Level;
public static bool operator >(Rank left, Rank right)
{
return left.Level > right.Level;
}
public static bool operator <(Rank left, Rank right)
{
return left.Level < right.Level;
}
}
class Program
{
static void Main()
{
var high = new Rank { Level = 5 };
var low = new Rank { Level = 2 };
Console.WriteLine(high > low);
}
}
Результат выполнения кода:
True
Пример
Давайте проверим оператор operator <:
using System;
class Rank
{
public int Level;
public static bool operator >(Rank left, Rank right)
{
return left.Level > right.Level;
}
public static bool operator <(Rank left, Rank right)
{
return left.Level < right.Level;
}
}
class Program
{
static void Main()
{
var high = new Rank { Level = 5 };
var low = new Rank { Level = 2 };
Console.WriteLine(low < high);
}
}
Результат выполнения кода:
True
Пример
Давайте добавим пару operator <= и operator >=:
using System;
class Score
{
public int Points;
public static bool operator >(Score left, Score right)
{
return left.Points > right.Points;
}
public static bool operator <(Score left, Score right)
{
return left.Points < right.Points;
}
public static bool operator >=(Score left, Score right)
{
return left.Points >= right.Points;
}
public static bool operator <=(Score left, Score right)
{
return left.Points <= right.Points;
}
}
class Program
{
static void Main()
{
var left = new Score { Points = 5 };
var right = new Score { Points = 5 };
Console.WriteLine(left <= right);
}
}
Результат выполнения кода:
True