The return
statement returns control to the caller of the function member in which the return
statement appears.
A return
statement with no expression can be used only in a function member that does not compute a value, that is, a method with the return type void
, the set
accessor of a property or indexer, a constructor, or a destructor.
A return
statement with an expression can only be used only in a function member that computes a value, that is, a method with a non-void return type, the get
accessor of a property or indexer, or a user-defined operator. An implicit conversion (§6.1) must exist from the type of the expression to the return type of the containing function member.
It is an error for a return
statement to appear in a finally
block (§8.10).
A return
statement is executed as follows:
return
statement specifies an expression, the expression is evaluated and the resulting value is converted to the return type of the containing function member by an implicit conversion. The result of the conversion becomes the value returned to the caller.return
statement is enclosed by one or more try
blocks with associated finally
blocks, control is initially transferred to the finally
block of the innermost try
statement. When and if control reaches the end point of a finally
block, control is transferred to the finally
block of the next enclosing try
statement. This process is repeated until the finally
blocks of all enclosing try
statements have been executed.Because a return
statement unconditionally transfers control elsewhere, the end point of a return
statement is never reachable.