检查是否有空

时间:2016-04-18 11:49:24

标签: c#

我目前正在检查组合框和数字提示是否为空但我正在使用If语句。

你能告诉我是否还有其他更快捷的方式吗?

这是当前代码

private void button1_Click(object sender, EventArgs e)
    {
        if(comboBox1.SelectedItem != null)
        {
            if(comboBox2.SelectedItem != null)
            {
                if(numericUpDown1.Value != 0)
                {
                    if(numericUpDown2.Value != 0)
                    {
                        if(numericUpDown3.Value != 0)
                        {
                            if(numericUpDown4.Value != 0)
                            {
                                string domacin = "" + comboBox1.GetItemText(comboBox1.SelectedItem);
                                int D_kosevaPrvoPoluvreme = (int)numericUpDown1.Value;
                                int D_kosevaDrugoPoluvreme = (int)numericUpDown3.Value;
                                int D_ukupnoKoseva = D_kosevaDrugoPoluvreme + D_kosevaPrvoPoluvreme;
                                int D_primljenihKosevaPrvoPoluvreme = (int)numericUpDown2.Value;
                                int D_primljenihKosevaDrugoPoluvreme = (int)numericUpDown4.Value;
                                int D_ukupnoPrimljenihKoseva = D_primljenihKosevaDrugoPoluvreme + D_primljenihKosevaPrvoPoluvreme;

                                string gost = "" + comboBox2.GetItemText(comboBox2.SelectedItem);
                                int G_kosevaPrvoPoluvreme = (int)numericUpDown2.Value;
                                int G_kosevaDrugoPoluvreme = (int)numericUpDown4.Value;
                                int G_ukupnoKoseva = G_kosevaDrugoPoluvreme + G_kosevaPrvoPoluvreme;
                                int G_primljenihKosevaPrvoPoluvreme = (int)numericUpDown1.Value;
                                int G_primljenihKosevaDrugoPoluvreme = (int)numericUpDown3.Value;
                                int G_ukupnoPrimljenihKoseva = G_primljenihKosevaDrugoPoluvreme + G_primljenihKosevaPrvoPoluvreme;

                                int rezultat;
                                Functions.odrediPobednika(out rezultat, D_ukupnoKoseva, G_ukupnoKoseva);

                                //SqlConnection con = new SqlConnection(@"Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=C:\Users\arist\Documents\VisualStudio2015\Projects\NBA\NBA\NBA.mdf;Integrated Security=True");
                                //SqlCommand cmd = new SqlCommand("", con);
                            }
                        }
                    }
                }
            }
        }            
    }

3 个答案:

答案 0 :(得分:3)

我会使用以下故障快速验证方法和有意义的消息:

private void button1_Click(object sender, EventArgs e)
{

    if (comboBox1.SelectedItem == null)
    {
        MessageBox.Show("Meaningful message, user should know what he has done wrong", "Invalid xyz");
        return;
    }
    else if (comboBox2.SelectedItem == null)
    {
        MessageBox.Show("Meaningful message, user should know what he has done wrong", "Invalid xyz");
        return;
    }
    else if (numericUpDown1.Value == 0)
    {
        MessageBox.Show("Meaningful message, user should know what he has done wrong", "Invalid xyz");
        return;
    }
    else if (numericUpDown2.Value == 0)
    {
        MessageBox.Show("Meaningful message, user should know what he has done wrong", "Invalid xyz");
        return;
    }
    else if (numericUpDown3.Value == 0)
    {
        MessageBox.Show("Meaningful message, user should know what he has done wrong", "Invalid xyz");
        return;
    }

    // insert code
}

它既不短也不高效,但它易于阅读,调试和最重要:用户知道出了什么问题。您还应该使用有意义的控制名称。

当然你也可以使用一个if并使用&&连接所有条件,但出于上述原因,我更喜欢我的第一种方法。

bool valid = comboBox1.SelectedItem != null 
          && comboBox2.SelectedItem != null 
          && numericUpDown1.Value != 0 
          && numericUpDown2.Value != 0 
          && numericUpDown3.Value != 0 
          && numericUpDown4.Value != 0;
if(valid){
    //Code
}

答案 1 :(得分:1)

首先想到的是使用一个if语句

 <audio autoplay preload="auto" controls="" class="sppaudioplayer" id="spp-audio-player">
 <source src="http://www.blogtalkradio.com/girlsinheels/2016/04/12/one-girl-two-boots.mp3"></source>
</audio>

为了便于阅读,这也可以放在多行上

if(comboBox1.SelectedItem != null && comboBox2.SelectedItem != null && numericUpDown1.Value != 0 && numericUpDown2.Value != 0 && numericUpDown3.Value != 0 && numericUpDown4.Value != 0)
{
    //Code
}

答案 2 :(得分:0)

在参考执行时间等方面没有太多优化。但是代码可以做得有点整洁,开头可能是这样的:

private void button1_Click(object sender, EventArgs e)
    {
        if(comboBox1.SelectedItem != null &&
           comboBox2.SelectedItem != null &&
           numericUpDown1.Value != 0 &&
           numericUpDown2.Value != 0 &&
           numericUpDown3.Value != 0 &&
           numericUpDown4.Value != 0)
           {
              string domacin = comboBox1.GetItemText(comboBox1.SelectedItem);
                                int D_kosevaPrvoPoluvreme = (int)numericUpDown1.Value;
                                int D_kosevaDrugoPoluvreme = (int)numericUpDown3.Value;
                                int D_ukupnoKoseva = D_kosevaDrugoPoluvreme + D_kosevaPrvoPoluvreme;
                                int D_primljenihKosevaPrvoPoluvreme = (int)numericUpDown2.Value;
                                int D_primljenihKosevaDrugoPoluvreme = (int)numericUpDown4.Value;
                                int D_ukupnoPrimljenihKoseva = D_primljenihKosevaDrugoPoluvreme + D_primljenihKosevaPrvoPoluvreme;

                                string gost = comboBox2.GetItemText(comboBox2.SelectedItem);
                                int G_kosevaPrvoPoluvreme = (int)numericUpDown2.Value;
                                int G_kosevaDrugoPoluvreme = (int)numericUpDown4.Value;
                                int G_ukupnoKoseva = G_kosevaDrugoPoluvreme + G_kosevaPrvoPoluvreme;
                                int G_primljenihKosevaPrvoPoluvreme = (int)numericUpDown1.Value;
                                int G_primljenihKosevaDrugoPoluvreme = (int)numericUpDown3.Value;
                                int G_ukupnoPrimljenihKoseva = G_primljenihKosevaDrugoPoluvreme + G_primljenihKosevaPrvoPoluvreme;

                                int rezultat;
                                Functions.odrediPobednika(out rezultat, D_ukupnoKoseva, G_ukupnoKoseva);

                                //SqlConnection con = new SqlConnection(@"Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=C:\Users\arist\Documents\VisualStudio2015\Projects\NBA\NBA\NBA.mdf;Integrated Security=True");
                                //SqlCommand cmd = new SqlCommand("", con);
    }
}