#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;