如何取消方法的执行?

时间:2009-04-13 14:18:47

标签: c#

考虑我在C#中执行方法'Method1'。 一旦执行进入方法,我检查几个条件,如果它们中的任何一个是假的,那么应该停止执行Method1。我怎么能这样做,即在满足某些条件时执行方法。?

但我的代码是这样的,

int Method1()
{
    switch(exp)
    {
        case 1:
        if(condition)
            //do the following. **
        else
            //Stop executing the method.**
        break;
        case2:
        ...
    }
}

5 个答案:

答案 0 :(得分:30)

使用return声明。

if(!condition1) return;
if(!condition2) return;

// body...

答案 1 :(得分:13)

我认为这就是你要找的东西。

if( myCondition || !myOtherCondition )
    return;

希望它能回答你的问题。

编辑:

如果由于错误而想退出方法,可以抛出这样的异常:

throw new Exception( "My error message" ); 

如果你想用一个值返回,你应该像以前一样返回你想要的值:

return 0;

如果是你需要的Exception,你可以在调用方法的方法中使用try catch来捕获它,例如:

void method1()
{
    try
    {
        method2( 1 );
    }
    catch( MyCustomException e )
    {
        // put error handling here
    }

 }

int method2( int val )
{
    if( val == 1 )
       throw new MyCustomException( "my exception" );

    return val;
}

MyCustomException继承自Exception类。

答案 2 :(得分:3)

你在谈论多线程吗?

或类似

int method1(int inputvalue)
{
   /* checking conditions */
   if(inputvalue < 20)
   {
      //This moves the execution back to the calling function
      return 0; 
   }
   if(inputvalue > 100)
   {
      //This 'throws' an error, which could stop execution in the calling function.
      throw new ArgumentOutOfRangeException(); 
   }
   //otherwise, continue executing in method1

   /* ... do stuff ... */

   return returnValue;
}

答案 3 :(得分:2)

有几种方法可以做到这一点。如果您认为是错误,可以使用returnthrow

答案 4 :(得分:1)

您可以使用return语句设置一个保护子句:

public void Method1(){

 bool isOK = false;

 if(!isOK) return; // <- guard clause

 // code here will not execute...


}