列表框未分配的变量

时间:2012-09-21 18:38:32

标签: c# listbox

在这里充分披露,我是一名做作业的学生。我有2个列表框,其中包含可以选择的项目。其中所说的内容不需要提取。我写了代码并且一切正常,除了我在代码末尾的3个变量上得到一个错误“使用未分配的变量”。他们是locFees,天和注册。谁能告诉我我做错了什么导致变量没有值?

    private void btnCalc_Click(object sender, EventArgs e)
    {
        double registration, lodging, total, days, locFees;
        int workshopIndex, locationIndex;
        if (lbWorkshop.SelectedIndex != -1)
        {
            workshopIndex = lbWorkshop.SelectedIndex;
            switch (workshopIndex)
            {
                case 0:
                    days = 3;
                    registration = 1000;
                    break;
                case 1:
                    days = 3;
                    registration = 800;
                    break;
                case 2:
                    days = 3;
                    registration = 1500;
                    break;
                case 3:
                    days = 5;
                    registration = 1300;
                    break;
                case 4:
                    days = 1;
                    registration = 500;
                    break;
            }
        }
        else
        {
            MessageBox.Show("You didn't select a workshop.");
        }
        if (lbLocation.SelectedIndex != -1)
        {
            locationIndex = lbLocation.SelectedIndex;
            switch (locationIndex)
            {
                case 0:
                    locFees = 150;
                    break;
                case 1:
                    locFees = 225;
                    break;
                case 2:
                    locFees = 175;
                    break;
                case 3:
                    locFees = 300;
                    break;
                case 4:
                    locFees = 175;
                    break;
                case 5:
                    locFees = 150;
                    break;
            }
        }
        else
        {
            MessageBox.Show("You didn't select a city.");
        }
        lodging = locFees * days;
        total = registration + lodging;
    }

1 个答案:

答案 0 :(得分:5)

  

任何人都可以告诉我,我做错了导致变量没有值吗?

当然 - 你忽略了workshopIndex不是0,1,2,3或4的可能性。

如果你认为永远不会发生这种情况,只需添加:

default:
    throw new InvalidOperationException("Invalid selected index " + workshopIndex);

或者,如果您只想使用某些默认值,请执行以下操作:

default:
    days = 1;
    registration = 100;
    break;

这是第一种方式,您最终可以取消分配daysregistration

接下来,如果lbWorkshop.SelectedIndex != -1,你只会进入开关区。您的else阻止只是:

 else
 {
     MessageBox.Show("You didn't select a workshop.");
 }

...所以在else阻止之后,你将继续。你可能想要:

 else
 {
     MessageBox.Show("You didn't select a workshop.");
     return;
 }

就switch语句和locFees块而言,您else遇到了同样的问题。

要从中学到一点:请感谢编译器为您发现这些。它阻止你运行肯定有错误的代码。这总是一件好事。

相关问题