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

我对 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);

这将不允许返回类型,如果不管它,它将继续通过函数不停止。这是不可取的。

269740 次浏览

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

  • 使用 return关键字。
  • 抛出一个异常。

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

如果你的方法返回 void,那么你可以写没有值的 return:

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??
    
  • If you are using .NET 4 there is a useful method that depending on your requirements you might want to consider using here: String.IsNullOrWhitespace.

  • You might want to use Environment.Newline instead of "\r\n".
  • You might want to consider another way to display invalid input other than writing messages to a text box.

如果函数为 void,则结束函数将为 return。否则,您需要执行显式的 return someValue。正如 Mark 提到的,您也可以 throw异常。

除了 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语句时才会返回。

这里的基本问题是你把 System.Environment.Exit错当成了 return

@ John Earlz 和 Nathan。我在大学里学到的方法是: 函数返回值,方法不返回。在某些语言中,语法实际上是不同的。例子(没有特定的语言) :

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

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

我将使用 return null;来指示没有要返回的数据