5.3 Definite AssignmentC# requires definite assignment; that is, variables must be initialized (or assigned to) before they are used. To test this rule, change the line that initializes myInt in Example 5-1 to: int myInt; and save the revised program shown in Example 5-2. Example 5-2. Uninitialized variableclass Values { static void Main( ) { int myInt; System.Console.WriteLine ("Uninitialized, myInt: {0}",myInt); myInt = 5; System.Console.WriteLine("Assigned, myInt: {0}", myInt); } } When you try to compile Example 5-2, the C# compiler will display the following error message: 5.2.cs(6,55): error CS0165: Use of unassigned local variable 'myInt' It is not legal to use an uninitialized variable in C#; doing so violates the rule of definite assignment. In this case, "using" the variable myInt means passing it to WriteLine( ). So does this mean you must initialize every variable? No, but if you don't initialize your variable then you must assign a value to it before you attempt to use it. Example 5-3 illustrates a corrected program. Example 5-3. Definite assignmentclass Values { static void Main( ) { int myInt; //other code here... myInt = 7; // assign to it System.Console.WriteLine("Assigned, myInt: {0}", myInt); myInt = 5; System.Console.WriteLine("Reassigned, myInt: {0}", myInt); } } |