C#使用未分配的局部变量(int)

时间:2014-03-30 02:14:59

标签: c#

我想知道我做错了什么,因为我正在尝试制作一个菜单,其中需要在预定义值中一起计算三个不同的课程,但是我似乎做错了转换,因为我似乎无法让它正常工作。

    int a, b, c;
    textBox4.Text = (a + b + c).ToString();
    if (comboBox1.Text == "Tzatziki")
    {
    a = 35;
    }
    else if (comboBox1.Text == "Carpaccio")
    {
    a = 40;
    }
    else if (comboBox1.Text == "Bruscetta")
    {
    a = 30;
    }
    else if (comboBox1.Text == "Shrimp Cocktail")
    {
    a = 40;
    }
    if (comboBox2.Text == "Sirloin")
    {
    b = 225;
    }
    else if (comboBox2.Text == "Lamb")
    {
    b = 195;
    }
    else if (comboBox2.Text == "Salmon")
    {
    b = 170;
    }
    else if (comboBox2.Text == "Veggy")
    {
    b = 100;
    }
    if (comboBox1.Text == "Chocolate Cake")
    {
    c = 45;
    }
    else if (comboBox1.Text == "Pancakes")
    {
    c = 35;
    }
    else if (comboBox1.Text == "Waffles")
    {
    c = 40;
    }
    else if (comboBox1.Text == "Sundae")
    {
    c = 38;
    }

}

非常感谢C#编程的新建议:)

2 个答案:

答案 0 :(得分:2)

为变量赋值并初始化它们:

int a = 0, b = 0, c = 0;

我认为您需要移动if / else-if语句的这一行:

textBox4.Text = (a + b + c).ToString();

答案 1 :(得分:1)

在将整数转换为文本对应之前,您需要为其提供初始值。

你得到零的原因是因为在初始化变量(零)之后,你立即使用它们。在那种情况下,if-then-else模式是无用的。


可能的解决方法是使用switch-case模式来简化编码, 后计算abc,设置文字值:

int a = 0, b = 0, c = 0;
switch(comboBox1.Text) {
    case "Tzatziki" :
        a = 35;
        break;
    case "Carpaccio" :
        a = 40;
        break;
    case "Bruscetta" :
        a = 30;
        break;
    case "Shrimp Cocktail" :
        a = 40;
        break;
}
switch(comboBox2.Text) {
    case "Sirloin" :
        b = 225;
        break;
    case "Lamb" :
        b = 195;
        break;
    case "Salmon" :
        b = 170;
        break;
    case "Veggy" :
        b = 100;
        break;
}
switch(comboBox3.Text) {
    case "Chocolate Cake" :
        c = 45;
        break;
    case "Pancakes" :
    c = 35;
        break;
    case "Waffles" :
        c = 40;
        break;
    case "Sundae" :
        c = 38;
        break;
}
textBox4.Text = (a + b + c).ToString();

你可能犯了c的错误,因为你再次使用ComboBox1(我希望它应该是ComboBox3。通过使用switch-case结构,代码变得更优雅


代码的最后一个问题是,如果组合框中没有输入任何值(或者与您检查的内容不同),该怎么办。在我上面写的情况中,值将保持0(仅对应于具有未知值的ComboBox的值)。您可以添加defaut :案例,以决定当时要做什么。