#400 – Overloading Binary Operators
August 30, 2011 Leave a comment
You can overload any of the following binary operators: +, -, *, /, %, &, |, ^, <<, >>. A binary operator is an operator applied to two operands.
For example, assume we have a Dog class that has the following bool properties: BarksALot, LikesBalls and Sheds. We might implement the & operator for the Dog class so that we get a new Dog instance with all of the boolean properties AND’d together.
public static Dog operator &(Dog d1, Dog d2)
{
Dog newDog = new Dog(string.Format("{0} & {1}", d1.Name, d2.Name), 0);
newDog.BarksALot = d1.BarksALot & d2.BarksALot;
newDog.LikesBalls = d1.LikesBalls & d2.LikesBalls;
newDog.Sheds = d1.Sheds & d2.Sheds;
return newDog;
}
We can now apply this operator to two Dog instances.
Dog kirby = new Dog("Kirby", 13);
kirby.LikesBalls = true;
kirby.BarksALot = true;
Dog jack = new Dog("Jack", 10);
jack.Sheds = true;
jack.BarksALot = true;
Dog newguy = kirby & jack;
