In the example below, the compiler generates an error \"Use of unassigned local variable r
\", even though I assign the variable in loop before using it. Why doe
The compiler generates that error whenever it detects an unassigned variable is possible.
Because the body of for
loops are not guaranteed to execute—for example, for(int i = 123; i < 0; i++)
—the variable is not guaranteed to be assigned, and so the compiler generates the error.
From the documentation:
The C# compiler does not allow the use of uninitialized variables. If the compiler detects the use of a variable that might not have been initialized, it generates compiler error CS0165. For more information, see Fields (C# Programming Guide). Note that this error is generated when the compiler encounters a construct that might result in the use of an unassigned variable, even if your particular code does not. This avoids the necessity of overly-complex rules for definite assignment.