加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 如何在执行操作之前检查所有方法是否为真

发布时间:2020-12-15 19:40:13 所属栏目:百科 来源:网络整理
导读:我有一个问题,我在表单中实施了大约5次验证检查.其中每个都位于自己的方法Is_XXX_Valid()中.我正在寻找一种方法来确定每个方法都返回true;否则应显示错误消息. 然而,这是出现问题的地方,我有一个部分工作的解决方案,因为如果先前的方法返回false,则无法运行
我有一个问题,我在表单中实施了大约5次验证检查.其中每个都位于自己的方法Is_XXX_Valid()中.我正在寻找一种方法来确定每个方法都返回true;否则应显示错误消息.

然而,这是出现问题的地方,我有一个部分工作的解决方案,因为如果先前的方法返回false,则无法运行后续方法

这是我正在使用的当前代码:

private void Button_Click(object sender,EventArgs e)
  {
    DialogResult validation_msgbox = MessageBox.Show("Are you sure you would like to submit this form?","Submit Form?",MessageBoxButtons.YesNo);

    // Run each validaion check

    if (IsAAAValid() && IsBBBValid())
    {
      //Continue and submit data
    }
    else
    {
      //Display the errors
      DialogResult Textbox_validation = MessageBox.Show(ErrorText,"Some errors were found.",MessageBoxButtons.OK);
    }
  }

使用上面的代码作为示例,如果IsAAAValid()返回false,则不执行第二个方法,因此未验证其中的数据,如果发现多个错误,则导致不正确的对话框.

谢谢!

解决方法

这被称为“短路评估”,您可以阅读有关 here的内容,这是C#编程语言通常需要的功能.你可以用这样的东西解决它:

bool avalid = IsAAAValid();
bool bvalid = IsBBBValid();
if (avalid && bvalid)
{
  //Continue and submit data
}

这将保证两种方法都能运行.

作为旁注,为了清楚您的代码,我建议您重命名验证方法,以表示它们有副作用.也就是说,它们不仅仅是简单地返回数据的状态;他们实际上有可能修改状态.这就是为什么在这种情况下短路评估会引起问题的原因.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读