在C ++中,如果我想退出方法而不返回任何我能做的事情;
// A completely useless method
static public double function(int a){
if(a==1){
cout << "Error !";
exit(1);
}
else
return (double)a;
}
如何在C#中执行等效操作?
答案 0 :(得分:13)
在.NET中处理错误条件的常用方法是抛出异常:
public static double function(int a) {
if (a == 1) {
throw new ArgumentException("The value 1 is not accepted.");
}
return (double)a;
}
调用该方法的代码或该行的某个地方会捕获该异常。这取决于调用代码在适当的级别处理它。
以这种方式清理输入的方法很常见,因此可以提前捕获任何错误值,而不是在代码中更难以跟踪时导致错误。
答案 1 :(得分:12)
“退出”功能不只是退出方法 - 它会终止程序。
http://msdn.microsoft.com/en-us/library/k9dcesdd.aspx
在C#控制台应用程序中,您可以调用System.Environment.Exit()。
但我建议任何执行此操作的代码都可以用更好的结构编写。例如,您的方法可能抛出异常,让调用者决定如何处理它。
答案 2 :(得分:7)
您可以使用return语句退出方法而不返回任何内容。但是如果返回类型与void无关,则必须返回一些内容。
如果由于错误而想要退出方法,则应该查看异常。
答案 3 :(得分:3)
答案 4 :(得分:0)
尝试返回退出方法而不退出整个程序。
答案 5 :(得分:0)
这肯定是一件奇怪的事情,但是 - 你可以调用Environment.Exit。我强烈建议 建议抛出异常。这样你就有机会进行清理,你的调用者可以决定如何处理错误。如果没有人这样做,你仍然会打破这个过程 - 但更优雅。
答案 6 :(得分:0)
考虑到你想要做的事情的背景,这应该是等价的:
public static double SomeFunction(int a)
{
if(a==1)
{
throw new Exception("Error!");
}
else
{
return (double)a;
}
}
答案 7 :(得分:0)
你没有。通过遵循您的方法,您必须在每次调用函数后进行测试,以检查是否实际返回了double。
在你的例子中,你会做类似......
的事情public static double myFunc( int a ) {
if( a==1 ){
throw new InvalidArgumentException( "a must be greater than one." );
}
return (double)a;
}
答案 8 :(得分:0)
另一个考虑所有先前答案的选项,如果您正在使用Windows Forms,则调用
Application.Exit();