Operator overloading allows operators to be defined on a class or struct so that it can be used with operator syntax. This is most useful on data types where there is a good definition for what a specific operator means, thereby allowing an economy of expression for the user.
Overloading the relational operators (==, !=, >, <, >=, <=) is covered in the section of Chapter 32 that explains how to overload the Equals() function from the .NET Framework.
Overloading conversion operators is covered in Chapter 25.
All unary operators are defined as static functions that take a single operator of the class ...