退出C#中的方法

时间:2009-03-31 00:38:53

标签: c# methods

在C ++中,如果我想退出方法而不返回任何我能做的事情;

// A completely useless method
static public double function(int a){
  if(a==1){
     cout << "Error !";
     exit(1);
  }
  else
     return (double)a;       
}

如何在C#中执行等效操作?

9 个答案:

答案 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();