http://www.csharphelp.com/2006/03/c-operator-overloading/