<?xml version="1.0"?>
<clause number="14.1.1" title="Values of expressions">
  <paragraph>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, a compile-time 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: <list><list_item> 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 (<hyperlink>12.3</hyperlink>) before its value can be obtained, or otherwise a compile-time error occurs. </list_item><list_item> The value of a property access expression is obtained by invoking the get-accessor of the property. If the property has no get-accessor, a compile-time error occurs. Otherwise, a function member invocation (<hyperlink>14.4.3</hyperlink>) is performed, and the result of the invocation becomes the value of the property access expression. </list_item><list_item> The value of an indexer access expression is obtained by invoking the get-accessor of the indexer. If the indexer has no get-accessor, a compile-time error occurs. Otherwise, a function member invocation (<hyperlink>14.4.3</hyperlink>) 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. </list_item></list></paragraph>
</clause>
