[Previous] [Contents] [Next]

Restrictions on Operator Overloading

It is not possible to overload the = assignment operator. However, when you overload a binary operator, its compound assignment equivalent is implicitly overloaded. For example, if you overload the + operator, the += operator is implicitly overloaded in that the user-defined operator+ method will be called.

The [] operators can't be overloaded. However, as you saw in Chapter 7, user-defined object indexing is supported through indexers.

The parentheses used to perform a cast are also not overloadable. Instead, you should use conversion operators, which are also referred to as user-defined conversions, the subject of the second half of this chapter.

Operators that are currently not defined in the C# language cannot be overloaded. You can't, for example, define ** as a means of defining exponentiation because C# does not define a ** operator. Also, an operator's syntax can't be modified. You can't change the binary * operator to take three arguments when, by definition, its syntax calls for two operands. Finally, an operator's precedence can't be altered. The rules of precedence are static-see Chapter 10, "Expressions and Operators," for more on these rules.

[Previous] [Contents] [Next]