【问题标题】:Is there a way that I can avoid an if statement full of checks有没有办法可以避免一个充满检查的 if 语句
【发布时间】:2019-05-01 07:54:07
【问题描述】:

我的代码如下所示:

 if (Settings.cc == CC.F1 || Settings.cc == CC.F2)

对 F3、F4 和 F5 进行额外测试

有什么方法可以避免对每个条目检查 Settings.cc 吗?

【问题讨论】:

标签: c#


【解决方案1】:

你可以这样做:

if (new[] {CC.F1, CC.F2, CC.F3, CC.F4, CC.F5}.Contains(Settings.cc))

【讨论】:

  • 并可能将 new[] 放入 const 数组中。
  • 是的 - 在有意义的最高范围内新建数组,因此您只在需要时重新创建它。
  • 如果有大量条目,也可以考虑使用HashSet
  • @kenny - 你能举个例子吗
  • public readonly CC[] MatchingCC = new [] { CC.F1, CC.F2, CC.F3, CC.F4, CC.F5 };
【解决方案2】:

switch 声明肯定会让它看起来更清晰。像这样的东西。

switch (Settings.cc)
{
    case CC.F1:
      // Conditional code
      break;
    case CC.F2:
      // Conditional code
      break;
    default:
      Console.WriteLine("Default case");
      break;
}

【讨论】:

    猜你喜欢
    • 2019-12-23
    • 1970-01-01
    • 2016-01-29
    • 1970-01-01
    • 2021-07-30
    • 2020-11-17
    • 2021-06-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多