נניח שיש לכם את המחלקה הבאה:
class Dolar
{
public double Value { get; set; }
public Dolar(double value)
{
Value = value;
}
}
וב - main
Dolar d1 = new Dolar(10);
Dolar d2 = new Dolar(20);
if (d1.Value > d2.Value)
{
}
לכאורה הקוד היה יותר קריא לו יכולנו לכתוב כך
כדי לעשות את זה צריך להוסיף למחלקה את הקוד הבא
public static bool operator >(Dolar d1, Dolar d2)
{
return d1.Value > d2.Value;
}
public static bool operator <(Dolar d1, Dolar d2)
{
return d1.Value < d2.Value;
}
למעשה נוכל לדרוס כמעט את כל האופרטרים שקיימים, אבל צריך לעשות את זה בזהירות כי אם נחליט שאנחנו מממשים את האופרטור < על PersonManager אף אחד לא יבין את הקוד שלנו, מה שצריך לזכור שהמטרה של OperatorOverload זה להקל על הקריאות של הקוד ולא להקשות עליו.
נקודה נוספת, שתמיד צריך לעשות את זה בצמדים כלומר אם אתם מממשים את האופרטור < אתם חייבים לממש את האופרטור > ואם תממשו את האופרטור == אתם חייבים לממש גם את != וכו'
כמובן שאפשר גם לכתוב כך
public static bool operator >(Dolar d1, double d2)
{
return d1.Value > d2;
}
public static bool operator <(Dolar d1, double d2)
{
return d1.Value < d2;
}
public static bool operator >(double d1, Dolar d2)
{
return d1 > d2.Value;
}
public static bool operator <(double d1, Dolar d2)
{
return d1 < d2.Value ;
}
ואז ב - main
if (d1 > 50)
{
}
if (50 > d1)
{
}