【问题标题】:How do I exit from a function?如何退出函数?
【发布时间】:2011-02-07 04:37:43
【问题描述】:

我知道在 vb.net 你可以做Exit Sub

但我想知道如何退出按钮中的点击事件?

这是我的代码:

private void button1_Click(object sender, EventArgs e)
{
    if (textBox1.Text == "" || textBox2.Text == "" || textBox3.Text == "")
    {
        //exit this event
    }
}

【问题讨论】:

    标签: c# return


    【解决方案1】:

    使用 return 关键字。

    return; //exit this event
    

    【讨论】:

      【解决方案2】:

      有两种方法可以提前退出方法(不退出程序):

      i) 使用 return 关键字。
      ii) 抛出异常。

      异常应该只用于异常情况——当方法不能继续并且它不能返回一个对调用者有意义的合理值时。通常你应该在完成后返回。

      如果您的方法返回 void,那么您可以编写不带值的 return:

      return;
      

      【讨论】:

      • 有没有人想评论一下抛出异常好不好?
      • 回答者关于异常的评论是一个很好的表达方式。异常对性能来说是“沉重的”,如果您的程序应该知道如何做出反应,则不一定会添加有用的信息。因此,一个典型的计划是:传达验证或其他预期问题 - 例如在 OP 中 - 使用预定义的返回码(例如 int 或其他标志)可以更好地工作。对值有很好的代码 cmets :)。然后可以将异常用于在您的“正常”问题检查和返回代码之后发生的“其他任何事情”......您的最后一个“其他”。
      【解决方案3】:

      使用return 语句。

      MSDN Reference

      【讨论】:

        【解决方案4】:

        你可以简单地用谷歌搜索“exit sub in c#”。

        如果每个文本框都是空的,为什么还要检查它。如果这是一个 asp.net 应用程序,您可以为这些文本框放置 requiredfieldvalidator 并检查 if(Page.IsValid)

        或者另一种解决方案是不满足这些条件:

        private void button1_Click(object sender, EventArgs e)
        {
            if (!(textBox1.Text == "" || textBox2.Text == "" || textBox3.Text == ""))
            {
                //do events
            }
        }
        

        最好使用 String.IsNullOrEmpty:

        private void button1_Click(object sender, EventArgs e)
        {
            if (!(String.IsNullOrEmpty(textBox1.Text)
            || String.IsNullOrEmpty(textBox2.Text)
            || String.IsNullOrEmpty(textBox3.Text)))
            {
                //do events
            }
        }
        

        【讨论】:

        • 猜猜哪个网站和问题现在是 Google 上的热门话题。
        【解决方案5】:

        如果您不必这样做,我建议尽量避免使用返回/退出。有些人会虔诚地告诉你永远不要这样做,但有时它是有道理的。但是,如果您可以构建您的检查,以便您不必输入它们,我认为它可以让人们以后更容易遵循您的代码。

        【讨论】:

        • 在很多方面不同意你的观点。有些人这样想的原因是他们编写的函数太长了。
        • 两个极端是“检查你不想要的东西并提前退出返回”或“检查你想要的东西,并尽可能深入地嵌套”(可能很多) .请不要鼓励后者!
        • 我同意。不过,在列出的示例中,我建议不要检查空且必须在内部使用 return,而是检查不需要使用 return 的条件。
        • 在函数中间返回是完全可以接受的。 @Thyamine:“检查不需要使用延迟退货的条件”到底是什么意思?
        • @KevinAnderson 听听听听!!我目前正在研究使用后一种替代方法的 Page_Load。它以“如果找到员工姓名”开头,遍历大约 850 行嵌套的 if 块,然后是“否则发送未找到员工的消息”。凌乱。
        【解决方案6】:

        使用return 关键字。

        来自 MSDN:

        return 语句终止 执行它的方法 出现并将控制权返回给 调用方法。它还可以返回 可选表达式的值。如果 该方法的类型为 void, return 语句可以省略。

        所以在你的情况下,用法是:

        private void button1_Click(object sender, EventArgs e)
        {
            if (textBox1.Text == "" || textBox2.Text == "" || textBox3.Text == "")
            {
                return; //exit this event
            }
        }
        

        【讨论】:

          【解决方案7】:
          return; // Prematurely return from the method (same keword works in VB, by the way)
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2020-10-09
            • 2017-09-20
            • 2013-08-05
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2021-11-18
            • 2010-09-25
            相关资源
            最近更新 更多