【发布时间】:2009-03-13 21:39:39
【问题描述】:
我经常有类似这样的代码:
if (itm != null)
{
foreach (type x in itm.subItems())
{
//dostuff
}
}
//do more stuff
在省略//do more stuff 的情况下,很容易避免额外的foreach 循环。通过使用适当的命令退出作用域(根据发生的情况,这通常意味着return 语句或continue statement)。
这类事情往往会导致箭头代码。我目前有几种方法可以解决这个问题:
- 使用
itm = itm == null ? itm.subItems() : emptyArray之类的代码 - 允许箭头代码
- 使用
goto - 使用邪恶的作用域技巧(将整个事物、if 语句全部包装在一个作用域中,然后将其打破)。在我看来,邪恶的作用域黑客攻击基本上等同于
goto,只是更丑更难阅读,所以我不认为这是一个有效的解决方案。 - 将一些块重构为新方法。事实上,在少数情况下,这可能是一个很好的解决方案,但大多数情况下它是不合适的,因为空引用主要是来自 MS 函数的错误条件。
有人愿意就哪些方法被认为更可取做出回应吗?
【问题讨论】:
标签: c#