2017-02-18 44 views
-1

有没有什么办法可以在函数中操作C#中的程序流?C#将“返回”放入函数中?

我的意思是在C++中,有可能将类似

#define Verify(x) if(x==null) return; 

#define Verify(x) if(x==null) goto _exit; 

成宏观和地方验证(x)的任何地方成一个函数。在这个例子中,如果满足某些条件,宏可以退出函数。 但在C#中,你可以将验证成一个函数,该函数会被内联,但你总有在

if (Verify(x)) return; 

形式写东西。所以问题是,除了异常之外,还有什么办法来调用调用函数的控制流作为被调用的函数吗?

+5

我严重不喜欢在宏中看到控制流程语句或以其他方式隐藏。不要这样做。例外是要走的路。 –

+0

但是异常有很多开销。 –

+2

你是什么意思开销?异常不用于控制流程,而是指示一个错误条件,超出这个条件就无法执行某个功能。你不会抛出异常只是为了将执行移到其他地方。 –

回答

3

通常的方法来防止无效的条件是在方法体的开头安装一个guard子句。你可以找到关于为什么我们需要后卫条款和如何实现它们在这篇文章中充分说明:Why do We Need Guard Clauses?

我也防守编码召开网络研讨会,你可以在这里找到记录会话:Advanced Defensive Coding Techniques