检测到无法访问的代码

时间:2010-04-06 16:03:32

标签: c#

我为第二个if语句检测到无法访问的代码。你能告诉我出了什么问题吗?

private bool ValidateSettings()
{
    if (chkDownload.Checked && String.IsNullOrEmpty(txtAppName.Text))
    {
        divAppDownloadError.Visible=true;
        return false;
    }
    else
    {
        return true;
    }

    if (chkpplaORfmp.Checked && String.IsNullOrEmpty(txtfmpORppla.Text))
    {
        divXPAAPPDownloadError.Visible = true;
        return false;
    }
    else
    {
         return true;
    }
}

6 个答案:

答案 0 :(得分:26)

这是因为第一个if/else块将以任一方式返回 - 该块之后的代码不会执行:

if(chkDownload.Checked && String.IsNullOrEmpty(txtAppName.Text))
{
    // You either return here
    divAppDownloadError.Visible=true;
    return false;
}
else
{
    // or here - after this statement how can anything
    // else possible execute?
    return true;
}

答案 1 :(得分:3)

也许你想删除else块,最后只返回true

如果任何设置不符合预期,您似乎想要返回false。让:

condition1 = chkDownload.Checked && String.IsNullOrEmpty(txtAppName.Text) condition2 = chkpplaORfmp.Checked && String.IsNullOrEmpty(txtfmpORppla.Text)

编写方式,我们有

  • (condition1,condition2)=(true,true)=>返回true
  • (condition1,condition2)=(true,false)=>返回true
  • (condition1,condition2)=(false,true)=> return false
  • (condition1,condition2)=(false,false)=> return false

你想要的是:

  • (condition1,condition2)=(true,true)=>返回true
  • (condition1,condition2)=(true,false)=>返回false
  • (condition1,condition2)=(false,true)=> return false
  • (condition1,condition2)=(false,false)=> return false

答案 2 :(得分:1)

您的代码与此相当,因为ifelse都包含return语句:

private bool ValidateSettings()
{
    if(chkDownload.Checked && String.IsNullOrEmpty(txtAppName.Text))
    {
        divAppDownloadError.Visible=true;
        return false; 
    }

    return true;
}

答案 3 :(得分:0)

Samuel Carrijo是对的;我认为您的意思是检查是否存在任何无效条件,如果有,请返回false。但是为了检查它们,你不能在结束前返回true

private bool ValidateSettings()
{
    if (chkDownload.Checked && String.IsNullOrEmpty(txtAppName.Text))
    {
        divAppDownloadError.Visible=true;
        return false;
    }

    if (chkpplaORfmp.Checked && String.IsNullOrEmpty(txtfmpORppla.Text))
    {
        divXPAAPPDownloadError.Visible = true;
        return false;
    }

    // if you've gotten this far, neither of the
    // invalidating conditions above were held;
    // so you're good!
    return true;
}

答案 4 :(得分:0)

private bool ValidateSettings()
{
  if ((chkDownload.Checked && String.IsNullOrEmpty(txtAppName.Text))||
    (chkpplaORfmp.Checked && String.IsNullOrEmpty(txtfmpORppla.Text)))
  {
    if (chkDownload.Checked)
    divAppDownloadError.Visible=true;
    else divXPAAPPDownloadError.Visible = true;

    return false;
  }

    return true;
  }

简化代码

答案 5 :(得分:0)

private bool ValidateSettings()
{
    if (chkDownload.Checked && String.IsNullOrEmpty(txtAppName.Text) && chkpplaORfmp.Checked && String.IsNullOrEmpty(txtfmpORppla.Text))
    {
        divAppDownloadError.Visible = true;
        divXPAAPPDownloadError.Visible = true;
        return false;
    }
    if ((chkDownload.Checked && String.IsNullOrEmpty(txtAppName.Text)) || (chkpplaORfmp.Checked && String.IsNullOrEmpty(txtfmpORppla.Text)))
    {
        if (chkDownload.Checked && String.IsNullOrEmpty(txtAppName.Text))
        {
            divAppDownloadError.Visible = true;
            divXPAAPPDownloadError.Visible = false;
        }
        else
        {
            divXPAAPPDownloadError.Visible = true;
            divAppDownloadError.Visible = false;
        }
        return false;
    } return true; 

}

这是有效的