c# - 链接多个 IF - 仅当 current 为 false 时才评估 next
问题描述
我有一个方法可以检查多个条件以进一步执行,只有在当前条件评估为 false 时才继续执行下一个,否则该方法将退出而不评估进一步的条件。并且条件的数量在不同的实现(子类)中有所不同。
我受限于我的创造力,使它看起来比使用可怕的 goto 语句更好。有没有更好的方法来执行以下操作:
public bool DoSomething()
{
bool result = true;
if (exclusion1)
{
result = false; goto Exit_Now;
}
if (exclusion2)
{
result = false; goto Exit_Now;
}
if (exclusion3)
{
result = false; goto Exit_Now;
}
if (exclusion4)
{
result = false; goto Exit_Now;
}
if (exclusion5)
{
result = false; goto Exit_Now;
}
if (result)
{
//do something
}
Exit_Now:
return result;
}
编辑:针对答案,我理解使用“else if”和条件 OR '||' 运营商是显而易见的选择:
子查询:哪个性能更高?我问是因为这发生在一个循环内,每次评估大约需要 30-40 毫秒。如果没有上面给出的代码中的 goto 语句,应该在一分钟内完成的工作最多需要两分钟。因此,查询。感谢所有的帮助。
解决方案
如果您可以将排除测试放入 if 语句中,只需使用else if
语句;
if (exclusion1)
{
result = false;
}
else if (exclusion2)
// etc ...
else if (result)
{
//do something
}
但我发现早点回来要简单得多,也更容易阅读。
if (exclusion1)
return false;
推荐阅读
- javascript - 检查传单地图上带有特定图标的标记
- php - 使用操作挂钩创建自定义 Wordpress REST API 端点
- leaflet - 读取 *geojson 文件的 style- 和 onEachFeature 函数有什么区别
- firebase - 菜单中的 Firebase 服务帐号
- c# - 如何在 Gridviewcolumn.celltemplate 中创建包含菜单项的上下文菜单?无法使示例代码工作
- python - 解析iso格式日期时间字符串的最有效方法
- asp.net - “/”中的服务器错误应用程序访问被拒绝
- amazon-web-services - 针对匹配模式的 aws api 网关标头验证
- javascript - Windows-motion-controls,Edge 上 WMR 的 a-frame 手控制器未出现
- google-apps-script - 如何在电子邮件中粘贴带有谷歌脚本/谷歌表格宏的表格?