c#使用未赋值的局部变量(int)
本文关键字:局部变量 int 赋值 | 更新日期: 2023-09-27 17:54:49
我想知道我做错了什么,因为我正试图制作一个菜单,其中需要在预定义的值中一起计算三种不同的课程,但我似乎在做错误的转换,因为我似乎无法使其正常工作。
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#编程有点陌生:)
给变量赋值并初始化它们:
int a = 0, b = 0, c = 0;
我认为你需要移动if / else-if
语句的这一行:
textBox4.Text = (a + b + c).ToString();
在将整数转换为文本之前,需要给它一个初始值。
你得到零的原因是因为在你初始化变量(用零)之后,你立即使用它们。在这种意义上,if-then-else模式是无用的。
一个可能的解决方案是使用switch-case
模式来简化编码和后,你计算a
, b
和c
,设置文本值:
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
)。通过使用切换式结构,代码变得更加优雅。
代码的最后一个问题是,如果在组合框中没有输入值(或与您选中的值不同)该怎么办。在我上面写的情况下,值仍然是0
(只有与ComboBox
对应的值具有未知值)。您可以添加一个defaut :
case,以便决定接下来要做什么。