代码之家  ›  专栏  ›  技术社区  ›  Nightforce2

如何在不退出程序的情况下退出方法?

  •  54
  • Nightforce2  · 技术社区  · 14 年前

    我对C仍然很陌生,与C/CPP相比,我很难适应它。

    如何在不退出程序的情况下退出C上的函数?

    if (textBox1.Text == "" || textBox1.Text == String.Empty || textBox1.TextLength == 0)
        textBox3.Text += "[-] Listbox is Empty!!!!\r\n";
    System.Environment.Exit(0);
    

    这将不允许返回类型,如果不使用它,它将继续执行函数unstopped。这是不可取的。

    6 回复  |  直到 6 年前
        1
  •  119
  •   Community frankie liuzzi    7 年前

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

    • 使用 return 关键字。
    • 引发异常。

    异常应仅用于异常情况-当方法无法继续并且无法返回对调用方有意义的合理值时。通常情况下,你应该在做完之后再回来。

    如果方法返回void,则可以不带值编写返回:

    return;
    

    具体关于您的代码:

    • 不需要写三次相同的测试。所有这些条件都是等效的。
    • 编写if语句时还应使用大括号,这样可以清楚地知道哪些语句位于if语句的主体中:

      if (textBox1.Text == String.Empty)
      {
          textBox3.Text += "[-] Listbox is Empty!!!!\r\n";
      }
      return; // Are you sure you want the return to be here??
      
    • 如果您使用.NET 4,根据您的要求,可能需要考虑使用以下有用的方法: String.IsNullOrWhitespace .

    • might 想用 Environment.Newline 而不是 "\r\n" .
    • 您可能需要考虑另一种显示无效输入的方法,而不是将消息写入文本框。
        2
  •  7
  •   Smashery    14 年前

    除了Mark的回答之外,您还需要知道范围,(在C/C++中)使用括号指定。所以:

    if (textBox1.Text == "" || textBox1.Text == String.Empty || textBox1.TextLength == 0)
        textBox3.Text += "[-] Listbox is Empty!!!!\r\n";
    return;
    

    会一直回到那个时候。然而:

    if (textBox1.Text == "" || textBox1.Text == String.Empty || textBox1.TextLength == 0)
    {
        textBox3.Text += "[-] Listbox is Empty!!!!\r\n";
        return;
    }
    

    只有当它变成那样的时候才会回来 if 语句。

        3
  •  1
  •   beaumondo    11 年前

    我会用 return null; 表示没有要返回的数据

        4
  •  0
  •   user29439    14 年前

    如果函数为空,则结束函数将 return . 否则,你需要做一个明确的 return someValue . 正如马克提到的,你也可以 throw 一个例外。你的问题的背景是什么?您是否有更大的代码示例来向您展示退出函数的一些方法?

        5
  •  0
  •   Stefan    14 年前

    @约翰、厄尔茨和内森。我在uni学到的方法是:函数返回值,方法不返回。在某些语言中,语法实际上是不同的。示例(无特定语言):

    Method SetY(int y) ...
    Function CalculateY(int x) As Integer ...
    

    大多数语言现在对两个版本都使用相同的语法,使用void作为返回类型来表示实际上没有返回类型。我认为这是因为语法更一致,更容易从一个方法更改为另一个函数,反之亦然。

        6
  •  0
  •   Maxime    6 年前

    这里的基本问题是你错了 System.Environment.Exit 对于 return .