Chapter 18 Unsafe code
operator-modifiers: operator-modifier operator-modifiers operator-modifier
operator-modifier: public static extern
operator-declarator: unary-operator-declarator binary-operator-declarator conversion-operator-declarator
unary-operator-declarator: type operator overloadable-unary-operator ( type identifier )
overloadable-unary-operator: one of + - ! ~ ++ -- true false
binary-operator-declarator: type operator overloadable-binary-operator ( type identifier , type identifier )
overloadable-binary-operator: one of + - * / % & | ^ << >> == != > < >= <=
conversion-operator-declarator: implicit operator type ( type identifier ) explicit operator type ( type identifier )
operator-body: block ;
There are three categories of overloadable operators: Unary operators (§10.9.1), binary operators (§10.9.2), and conversion operators (§10.9.3).
When an operator declaration includes an extern modifier, the operator is said to be an external operator. Because an external operator provides no actual implementation, its operator-body consists of a semi-colon. For all other operators, the operator-body consists of a block, which specifies the statements to execute when the operator is invoked. The block of an operator must conform to the rules for value-returning methods described in §10.5.8.
The following rules apply to all operator declarations:
An operator declaration must include both a public and a static modifier.
The parameter(s) of an operator must be value parameters. It is a compile-time error for an operator declaration to specify ref or out parameters.
The signature of an operator (§10.9.1, §10.9.2, §10.9.3) must differ from the signatures of all other operators declared in the same class.
All types referenced in an operator declaration must be at least as accessible as the operator itself (§3.5.4).
It is an error for the same modifier to appear multiple times in an operator declaration.
Each operator category imposes additional restrictions, as described in the following sections.
Copyright Microsoft Corporation 1999-2003. All Rights Reserved.247