分配未分配的局部变量

下面的代码运行一个“ for”循环,以创建第1个月至第12个月,然后根据月号从1月到12月命名.那块编译很好.我尝试在屏幕上写下月份名称的底部是失败的地方.它说:“使用未分配的局部变量’monthName’;但是,monthName以前只是使用过,并在上面声明.您能提供的任何帮助将不胜感激.

for (int month = 1; month <= 12; month++)
{
    string monthName;
    double monthlyProd = .1 * dProdRate;
    double monthlySales = .07 * dSalesRate;
    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);
最佳答案
您知道月份只能接受1到12之间的值,但是编译器并不那么聪明.如果说month为0,则不会为变量monthName赋值,这就是编译器抱怨的内容.要修复它,只需在声明它时初始化变量:

string monthName = null;

另外,您的代码有些混乱,因为monthName在声明它的循环之外使用,但我认为这是一个错字,因为现在的代码不会给您您所要的错误.

转载注明原文:分配未分配的局部变量 - 代码日志