Object manipulations are accomplished by sending messages (in the form of method calls) to the objects. This method-call notation is cumbersome for certain kinds of classes, especially mathematical classes. For these classes, it would be convenient to use C#’s rich set of built-in operators to specify object manipulations. In this section, we show how to enable these operators to work with class objects—via a process called operator overloading.
You can overload most operators to make them sensitive to the context in which they’re used. Some operators are overloaded more frequently than others, especially the various arithmetic operators, such as
-, where operator notation often is more natural. Figures 12.17 ...