C# 如果c中的条件满足,则立即停止方法的执行#
我有几个if语句。我想要的是,只要满足一个条件,我就应该退出这个方法。我将使用这个if语句来过滤datagridview或报表的数据。在我下面的代码中,它不能做到这一点。它似乎经历了所有的条件。一旦发现满足条件,程序就会执行它并继续执行另一个if语句,如果它看到它也满足条件,它也会被执行。 我认为这对你来说是很基本的。我不记得也不知道该怎么做C# 如果c中的条件满足,则立即停止方法的执行#,c#,C#,我有几个if语句。我想要的是,只要满足一个条件,我就应该退出这个方法。我将使用这个if语句来过滤datagridview或报表的数据。在我下面的代码中,它不能做到这一点。它似乎经历了所有的条件。一旦发现满足条件,程序就会执行它并继续执行另一个if语句,如果它看到它也满足条件,它也会被执行。 我认为这对你来说是很基本的。我不记得也不知道该怎么做 private void btnRoute_Click(object sender, EventArgs e) { if (cbW
private void btnRoute_Click(object sender, EventArgs e)
{
if (cbWithRoute.Checked)
{
// StartSearch(txtRoute.SelectedValue.ToString());
MessageBox.Show(@"route");
}
if (cbWithRoute.Checked && cbWithWholeSeller.Checked)
{
//StartSearch(txtRoute.SelectedValue.ToString(), txtWholeSeller.SelectedValue.ToString());
MessageBox.Show(@"route wholeseller");
}
if (cbWithRoute.Checked && cbWithCustomer.Checked)
{
MessageBox.Show(@"route customer");
}
if (cbWithRoute.Checked && cbWithWholeSeller.Checked && cbWithDate.Checked)
{
//StartSearch(txtRoute.SelectedValue.ToString(),
// txtWholeSeller.SelectedValue.ToString(), Convert.ToDateTime(txtFromDate.Text).ToShortDateString(),
// Convert.ToDateTime(txtToDate.Text).ToShortDateString());
MessageBox.Show(@"route wholseller date");
}
if (cbWithRoute.Checked && cbWithCustomer.Checked && cbWithDate.Checked)
{
MessageBox.Show(@"route date customer");
}
if (cbWithRoute.Checked && cbWithWholeSeller.Checked && cbWithDate.Checked && cbWithCustomer.Checked)
{
//StartSearch(txtRoute.SelectedValue.ToString(),
// txtWholeSeller.SelectedValue.ToString(), Convert.ToDateTime(txtFromDate.Text).ToShortDateString(),
// Convert.ToDateTime(txtToDate.Text).ToShortDateString(), txtCustomer.SelectedValue.ToString());
MessageBox.Show(@"route wholeseller date customer");
}
//else
//{
// MessageBox.Show(@"Check criteria to search.");
//}
}
我对真实代码进行了注释,并将其替换为消息框,以显示选中了哪些复选框。谢谢。因为您的方法retrun类型是
void
添加return
到所有if条件的末尾,如下所示
if (cbWithRoute.Checked)
{
// StartSearch(txtRoute.SelectedValue.ToString());
MessageBox.Show(@"route");
return;
}
if (cbWithRoute.Checked && cbWithWholeSeller.Checked)
{
//StartSearch(txtRoute.SelectedValue.ToString(), txtWholeSeller.SelectedValue.ToString());
MessageBox.Show(@"route wholeseller");
return;
}
依此类推……因为您的方法retrun类型是
void
添加一个return
到所有if条件的末尾,如下所示
if (cbWithRoute.Checked)
{
// StartSearch(txtRoute.SelectedValue.ToString());
MessageBox.Show(@"route");
return;
}
if (cbWithRoute.Checked && cbWithWholeSeller.Checked)
{
//StartSearch(txtRoute.SelectedValue.ToString(), txtWholeSeller.SelectedValue.ToString());
MessageBox.Show(@"route wholeseller");
return;
}
以此类推……如果您希望它停止执行,请将下面一行
return;
我不想理解检查背后的业务逻辑,但您可能还需要阅读
else
语句和else,如果您希望它停止执行,请将下面一行
return;
我不想理解检查背后的业务逻辑,但您可能还想阅读else
语句和else if
else if是您需要的概念。如下图所示
if (cbWithRoute.Checked)
{
// StartSearch(txtRoute.SelectedValue.ToString());
MessageBox.Show(@"route");
}
else if (cbWithRoute.Checked && cbWithWholeSeller.Checked)
{
//StartSearch(txtRoute.SelectedValue.ToString(), txtWholeSeller.SelectedValue.ToString());
MessageBox.Show(@"route wholeseller");
}
否则,如果是你需要的概念。如下图所示
if (cbWithRoute.Checked)
{
// StartSearch(txtRoute.SelectedValue.ToString());
MessageBox.Show(@"route");
}
else if (cbWithRoute.Checked && cbWithWholeSeller.Checked)
{
//StartSearch(txtRoute.SelectedValue.ToString(), txtWholeSeller.SelectedValue.ToString());
MessageBox.Show(@"route wholeseller");
}
你的意思是像其他的,如果?当然,您需要重新安排您的条件,否则只要cbWithRoute.Checked
不查看其他检查,方法就会退出。如果您更改为if-else,那么您将获得不检查每个条件的好处,并且不需要返回语句。您也可以考虑将第一个条件嵌套为最外面的if语句,这样就不必一次又一次地检查它。选项CBWRououTE。它自己检查的是默认选项,应该是方法中测试的最后一个项目而不是第一个。然后在每个if语句中添加一个return将解决这个问题。@jdweng:完全正确。这就是我在你发表评论之前所做的,现在正在发挥作用。谢谢你,你是说像其他的吗?当然,您需要重新安排您的条件,否则只要cbWithRoute.Checked
不查看其他检查,方法就会退出。如果您更改为if-else,那么您将获得不检查每个条件的好处,并且不需要返回语句。您也可以考虑将第一个条件嵌套为最外面的if语句,这样就不必一次又一次地检查它。选项CBWRououTE。它自己检查的是默认选项,应该是方法中测试的最后一个项目而不是第一个。然后在每个if语句中添加一个return将解决这个问题。@jdweng:完全正确。这就是我在你发表评论之前所做的,现在正在发挥作用。谢谢,这是我第一次尝试。如果我在每个语句上放置一个返回,比如我检查cbWithRoute和cbWithCustomer,它将执行第一个If语句并退出实际上是错误的方法。它应该跳过cbWithRoute.Checked和第二条语句,并执行第三条语句,因为这是正确的语句。然后您应该组织所有的if条件,以便您的程序应该如何执行它们。请优先考虑条件。这是我第一次尝试的。如果我在每个语句上放置一个返回,比如我检查cbWithRoute和cbWithCustomer,它将执行第一个If语句并退出实际上是错误的方法。它应该跳过cbWithRoute.Checked和第二条语句,并执行第三条语句,因为这是正确的语句。然后您应该组织所有的if条件,以便您的程序应该如何执行它们。请优先考虑条件。这是我第一次尝试的。如果我在每个语句上放置一个返回,比如我检查cbWithRoute和cbWithCustomer,它将执行第一个If语句并退出实际上是错误的方法。它应该跳过cbWithRoute.Checked和第二条语句,然后执行第三条语句,因为这是正确的一条。这是我尝试的第一件事。如果我在每个语句上放置一个返回,比如我检查cbWithRoute和cbWithCustomer,它将执行第一个If语句并退出实际上是错误的方法。它应该跳过cbWithRoute.Checked和第二条语句,并执行第三条语句,因为这是正确的语句。如果我要使用else If,那么我应该删除每条语句的返回。我就是这么做的。我删除了返回值并添加了else if,但它与放置返回值完全一样。在一个方法中放置多个返回值被认为是不好的做法。因此,为了避免多个exit-else-if可以被考虑,我在else-if中加上它是不够的。我把这句话写反了。我从最多的条件到最少的条件开始,它起了作用@Irshad:我使用了你的评论。如果我要使用else If,那么我应该删除每个语句的返回。我就是这么做的。我删除了返回值并添加了else if,但它与放置返回值完全一样。在一个方法中放置多个返回值被认为是不好的做法。因此,为了避免多个exit-else-if可以被考虑,我在else-if中加上它是不够的。我把这句话写反了。我从最多的条件到最少的条件开始,它起了作用@伊沙德:我用了你的评论。