编译器不执行特定部分

时间:2012-08-20 11:12:00

标签: c#

if (radioButton1.Checked)
{
    int a;
    string s = comboBox1.SelectedItem.ToString();

    if (s == "30 Days")
    {
        a = 30;
    }                
    if (s == "60 days")
    {
        a = 60;
    }
    else
    {
        MessageBox.Show(comboBox1.SelectedItem.ToString());
    }
    view_n_cstmr v = new view_n_cstmr(a);
    v.MdiParent = this.MdiParent;
    v.Show();
}

'a'(int)的值不会影响此代码,但在swe中找到了组合框的项目 请帮帮我

5 个答案:

答案 0 :(得分:3)

代码中最大的问题(可能让您感到困惑)是第一个if语句未与下一个if...else语句“连接”。尝试将其更改为:

if {...}
else if {...}
else {...}

答案 1 :(得分:1)

我认为存在字符串敏感比较的问题。

请尝试以下代码进行字符串不敏感比较 -

if (radioButton1.Checked)
{
    int a; string s = comboBox1.SelectedItem.ToString();

    if (string.Compare(s, "30 days", true) == 0) { a = 30; } 
    else if (string.Compare(s, "60 days", true) == 0) { a = 60; } 
    else 
    { 
        MessageBox.Show(comboBox1.SelectedItem.ToString()); 
    }
}

答案 2 :(得分:0)

我认为应该是

if (radioButton1.Checked)
{
    int a = 0;
    string s = comboBox1.SelectedItem.ToString();

    if (s == "30 Days")
        a = 30;            
    else if (s == "60 days")
        a = 60;
    else
        MessageBox.Show(comboBox1.SelectedItem.ToString());

    view_n_cstmr v = new view_n_cstmr(a);
    v.MdiParent = this.MdiParent;
    v.Show();
}

答案 3 :(得分:0)

switch (s.ToLower())
{
    case "30 days":
       a = 30;
       break;
    case "60 days":
       a = 60;
       break;
    default:           
       MessageBox.Show(comboBox1.SelectedItem.ToString());
       break;
}

答案 4 :(得分:0)

许多人已经指出你正在使用的if else语句没有连接。 并且。在您的组合框中,您还有其他项目"30 Days""60 days"吗? 在你的其他地方,你没有设置整数a。

这会导致恭维错误:“Use of unassigned local variable 'a'

代码中的这一行。

view_n_cstmr v = new view_n_cstmr(a);

也许将变量'a'赋值为默认值,或者在else语句中返回?