Use of unassigned local variable that is assigned

后端 未结 3 1968
囚心锁ツ
囚心锁ツ 2021-01-23 12:39

The below code runs a \'for\' loop to create months 1 through 12 then names each month Jan through Dec according to their number. That pieces compiles fine. At the bottom wher

相关标签:
3条回答
  • 2021-01-23 12:49

    You have declared the monthName, monthlyProd,monthlySales under the scope of For Loop and trying to use those variables out of the scope of For Loop. You should declare variables before for loop-

    string monthName;
    double monthlyProd = .1 * dProdRate;
    double monthlySales = .07 * dSalesRate;
    
    for (int month = 1; month <= 12; month++)
    {
    
        if (month == 1) { monthName = "Jan"; }
        if (month == 2) { monthName = "Feb"; monthlyProd = 0; }
        if (month == 3) { monthName = "Mar"; }
        if (month == 4) { monthName = "Apr"; }
        if (month == 5) { monthName = "May"; }
        if (month == 6) { monthName = "Jun"; monthlyProd = 0; }
        if (month == 7) { monthName = "Jul"; }
        if (month == 8) { monthName = "Aug"; }
        if (month == 9) { monthName = "Sep"; monthlySales = (.15 * dSalesRate); }
        if (month == 10) { monthName = "Oct"; }
        if (month == 11) { monthName = "Nov"; }
        if (month == 22) { monthName = "Dec"; monthlySales = (.15 * dSalesRate); }
    }
    dEndingInventory += dPreviousProd - dPreviousSales;
    Console.WriteLine("{0}{1,15}{2,15}{3,15}", monthName, monthlyProd, monthlySales, dEndingInventory);
    
    0 讨论(0)
  • 2021-01-23 12:54

    You will be surely declaring monthName outside scope also(in your loop it declared again). other wise the program should tell compile error. right click on the variable then "Go to defenision". If so variables are different. so only its misbehaving

    The reason is two variables having different memory in primary memory. so one memory update won't effect the other. Compiler will use maximum local variable for its processing. Inside loop its the declared one inside. Outside the loop its the outside one

    So if you needn't the outer variable value further don't declare it again inside. other wise you declare it outside of the loop with some other name

    0 讨论(0)
  • 2021-01-23 13:14

    You know that month can only take the values 1 to 12 inclusive but the compiler is not that smart. If say month is 0 then the variable monthName is never assigned a value and that is what the compiler is complaining about. To fix it simply initialize the variable when you declare it:

    string monthName = null;
    

    Also, there is something fishy about your code because monthName is used outside the loop where it is declared but I assume that this is a typo because the code as it stands now will not give you the error you are asking about.

    0 讨论(0)
提交回复
热议问题