X hits on this document

1069 views

0 shares

0 downloads

0 comments

100 / 396

Chapter ‎18   Unsafe code

The this variable of a struct-type instance constructor must be definitely assigned at each location where that instance constructor returns.

5.3.1 Initially assigned variables

The following categories of variables are classified as initially assigned:

Static variables.

Instance variables of class instances.

Instance variables of initially assigned struct variables.

Array elements.

Value parameters.

Reference parameters.

Variables declared in a catch clause or a foreach statement.

5.3.2 Initially unassigned variables

The following categories of variables are classified as initially unassigned:

Instance variables of initially unassigned struct variables.

Output parameters, including the this variable of struct instance constructors.

Local variables, except those declared in a catch clause or a foreach statement.

5.3.3 Precise rules for determining definite assignment

In order to determine that each used variable is definitely assigned, the compiler must use a process that is equivalent to the one described in this section.

The compiler processes the body of each function member that has one or more initially unassigned variables. For each initially unassigned variable v, the compiler determines a definite assignment state for v at each of the following points in the function member:

At the beginning of each statement

At the end point (§‎8.1) of each statement

On each arc which transfers control to another statement or to the end point of a statement

At the beginning of each expression

At the end of each expression

The definite assignment state of v can be either:

Definitely assigned. This indicates that on all possible control flows to this point, v has been assigned a value.

Not definitely assigned. For the state of a variable at the end of an expression of type bool, the state of a variable that isn’t definitely assigned may (but doesn’t necessarily) fall into one of the following sub-states:

Definitely assigned after true expression. This state indicates that v is definitely assigned if the boolean expression evaluated as true, but is not necessarily assigned if the boolean expression evaluated as false.

Definitely assigned after false expression. This state indicates that v is definitely assigned if the boolean expression evaluated as false, but is not necessarily assigned if the boolean expression evaluated as true.

The following rules govern how the state of a variable v is determined at each location.

Copyright Microsoft Corporation 1999-2003. All Rights Reserved.87

Document info
Document views1069
Page views1069
Page last viewedSat Dec 10 20:44:23 UTC 2016
Pages396
Paragraphs9401
Words133190

Comments