如何退出方法而不退出程序?
对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);
这将不允许返回types,如果单独留下,它将继续通过未closures的function继续。 这是不可取的。
提早退出方法有两种方法(不退出程序):
- 使用
return
关键字。 - 抛出exception。
例外情况只能用于特殊的情况 – 当方法不能继续时,它不能返回一个合理的值,这对调用者是有意义的。 通常虽然你应该只是在你完成时回来。
如果你的方法返回void,那么你可以写没有值的返回值:
return;
具体关于你的代码:
- 没有必要三次写同样的testing。 所有这些条件都是相同的。
-
在编写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 。
- 您可能要使用
Environment.Newline
而不是"\r\n"
。 - 您可能想要考虑另一种显示无效input的方法,而不是将消息写入文本框。
除了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
语句时才会返回。
如果该函数是一个无效的,结束函数将return
。 否则,你需要做一个明确的return someValue
。 正如马克所说,你也可以throw
一个exception。 你的问题的背景是什么? 你有一个更大的代码示例,向您展示一些退出函数的方法吗?
这里的基本问题是你错误System.Environment.Exit返回。
@约翰,伯爵和内森 我在uni学到的方法是:函数返回值,方法不。 在某些语言中,语法是/实际上是不同的。 示例(无特定语言):
Method SetY(int y) ... Function CalculateY(int x) As Integer ...
大多数语言现在对这两个版本使用相同的语法,使用void作为返回types来说实际上不是返回types。 我认为这是因为语法更加一致,更容易从一个方法转换到另一个方法,反之亦然。
我会使用return null;
表示没有要返回的数据