【问题标题】:How can i write multiple statement using conditional operator如何使用条件运算符编写多个语句
【发布时间】:2011-03-14 12:17:10
【问题描述】:

我正在编写条件运算符来代替 if else 。但在我的情况下,我有多个陈述如下

if (condition)
{
    statement 1;
    statement 2;
}
else
{
    statement 3;
    statement 4;
}

如何使用条件运算符? and : 编写相同的代码

【问题讨论】:

  • 这是一个尝试不必要地使用某些东西只是因为它很酷的例子。

标签: c# conditional-operator


【解决方案1】:

条件运算符旨在评估替代表达式,而不是调用替代语句

如果您的两组语句在逻辑上都具有相同的结果类型,您可以重构以将它们中的每一个放在单独的方法中:

var result = condition ? Method1() : Method2();

但如果它们在逻辑上更多地与副作用有关而不是评估结果,我会改用 if 块。

【讨论】:

    【解决方案2】:

    你不能,因为条件运算符是一个表达式,而不是一个语句。您必须使用 if-else 构造来实现您想要做的事情。

    【讨论】:

      【解决方案3】:

      仅当它们公开了一个流畅的 API 并有一个返回值(即允许您将多个步骤压缩到一个表达式中的东西);例如:

      sb = (someCondition) ? sb.Append("foo").Append("bar") 
              : sb.Apppend("cde").Append("fgh");
      

      不然呢?不;您只能得到一个表达式来评估每个案例。当然,您可以重构为方法;

      var x = (someCondition) ? MethodA() : MethodB();
      

      再次假设返回值。

      【讨论】:

        【解决方案4】:

        创建一个函数或委托,它接受与您要评估的表达式数量相对应的多个参数:

        int i = 7, j = 8;
        Func<int, int, int> dummy = ((a,b) => b);
        int k = (i < 5) ? dummy(i++, j--) : dummy(i--, j++);
        Console.WriteLine("{0}, {1}, {2}", i, j, k);
        

        【讨论】:

          猜你喜欢
          • 2014-10-01
          • 2021-09-15
          • 2021-09-10
          • 1970-01-01
          • 2022-11-29
          • 1970-01-01
          • 2012-04-19
          • 2023-03-17
          • 1970-01-01
          相关资源
          最近更新 更多