CATEGORII DOCUMENTE |
An expression is classified as one of the following:
A value. Every value has an associated type.
A variable. Every variable has an associated type, namely the declared type of the variable.
A namespace. An expression with this classification can only appear as the left hand side of a member-access (7.5.4). In any other context, an expression classified as a namespace causes an error.
A type. An expression with this classification can only appear as the left hand side of a member-access (7.5.4), or as an operand for the as operator (7.9.10), the is operator (7.9.9), or the typeof operator (7.5.11). In any other context, an expression classified as a type causes an error.
A method group, which is a set of overloaded methods resulting from a member lookup (7.3). A method group may have an associated instance expression. When an instance method is invoked, the result of evaluating the instance expression becomes the instance represented by this (7.5.7). A method group is only permitted in an invocation-expression (7.5.5) or a delegate-creation-expression (7.5.10.3). In any other context, an expression classified as a method group causes an error.
A property access. Every property access has an associated type, namely the type of the property. Furthermore, a property access may have an associated instance expression. When an accessor (the get or set block) of an instance property access is invoked, the result of evaluating the instance expression becomes the instance represented by this (7.5.7).
An event access. Every event access has an associated type, namely the type of the event. Furthermore, an event access may have an associated instance expression. An event access may appear as the left hand operand of the += and -= operators (7.13.3). In any other context, an expression classified as an event access causes an error.
An indexer access. Every indexer access has an associated type, namely the element type of the indexer. Furthermore, an indexer access has an associated instance expression and an associated argument list. When an accessor (the get or set block) of an indexer access is invoked, the result of evaluating the instance expression becomes the instance represented by this (7.5.7), and the result of evaluating the argument list becomes the parameter list of the invocation.
Nothing. This occurs when the expression is an invocation of a method with a return type of void. An expression classified as nothing is only valid in the context of a statement-expression (8.6).
The final result of an expression is never a namespace, type, method group, or event access. Rather, as noted above, these categories of expressions are intermediate constructs that are only permitted in certain contexts.
A property access or indexer access is always reclassified as a value by performing an invocation of the get-accessor or the set-accessor. The particular accessor is determined by the context of the property or indexer access: If the access is the target of an assignment, the set-accessor is invoked to assign a new value (7.13.1). Otherwise, the get-accessor is invoked to obtain the current value (7.1.1).
Most of the constructs that involve an expression ultimately require the expression to denote a value. In such cases, if the actual expression denotes a namespace, a type, a method group, or nothing, an error occurs. However, if the expression denotes a property access, an indexer access, or a variable, the value of the property, indexer, or variable is implicitly substituted:
The value of a variable is simply the value currently stored in the storage location identified by the variable. A variable must be considered definitely assigned (5.3) before its value can be obtained, or otherwise a compile-time error occurs.
The value of a property access expression is obtained by invoking the get-accessor of the property. If the property has no get-accessor, an error occurs. Otherwise, a function member invocation (7.4.3) is performed, and the result of the invocation becomes the value of the property access expression.
The value of an indexer access expression is obtained by invoking the get-accessor of the indexer. If the indexer has no get-accessor, an error occurs. Otherwise, a function member invocation (7.4.3) is performed with the argument list associated with the indexer access expression, and the result of the invocation becomes the value of the indexer access expression.
Politica de confidentialitate | Termeni si conditii de utilizare |
Vizualizari: 840
Importanta:
Termeni si conditii de utilizare | Contact
© SCRIGROUP 2024 . All rights reserved