【发布时间】:2014-11-05 01:47:06
【问题描述】:
如何在调用返回之前/之后执行某些部分代码。例如 return 可能在一个方法中被多次调用,因此我不希望在 return 之前复制粘贴相同的行。
我可能错了,但有些人告诉我 try 块会使代码运行缓慢,而且我的方法被调用了 1000 多次,因此即使这个任务可以用 try/finally 块完成,我也想避免它。
例子:
void method()
{
MyObject activator = new ...
AnotherObject something = new ...
SomethingElse asdf = new ...
// some other variables
if(..)
// Deactivate activator, close things, confirm user exited
// Do some post calculations
return;
if(..)
// Deactivate activator, close things, confirm user exited
// Do some post calculations
return;
if(..)
// Deactivate activator, close things, confirm user exited
// Do some post calculations
return;
}
现在我需要在每次返回之前或之后执行相同的代码。我需要使用在方法顶部定义的变量的代码,这就是我不能外包的原因。这个怎么做?有办法吗?如有重复,我深表歉意。
【问题讨论】:
-
使用
else if没有回报? -
try块非常有效,只要不抛出异常(导致堆栈跟踪缓慢) -
你能举一个更完整的例子来说明你想要达到的目标吗?需要调用什么代码?
-
如果您不愿意使用
try/final块,您愿意使用goto-label组合吗? msdn.microsoft.com/en-us/library/13940fs2.aspx -
@judgeja 我也想过,但我无法改变这个要求。
标签: c#