【问题标题】:if return statement in c#c#中的if返回语句
【发布时间】:2013-04-05 10:32:10
【问题描述】:

我正在重写一个虚方法,我需要根据布尔表达式返回一个值。

  public override float Q()
    {
        return (float)Math.Sqrt(2 * A* B / C);
    }

如果上面显示的计算值小于 D,我需要为 Q() 返回一个本地成员(称为 D)。我尝试使用常规 if 语句,但它不会返回值,除非它在if 语句。任何帮助将不胜感激。

【问题讨论】:

  • 请告诉我们你尝试了什么。
  • 那么上面的代码是基类还是派生类呢?你想让派生类从基类返回值吗

标签: c# if-statement return overriding


【解决方案1】:

完全跳过if 怎么样:

return Math.Max(D, Math.Sqrt (2*A*B/C));

或使用三元运算符

return  Math.Sqrt (2*A*B/C) < D ? D :  Math.Sqrt (2*A*B/C); // too verbose but you get the idea

【讨论】:

  • 我想你的意思是Math.Max
【解决方案2】:

我认为这会起作用

public override float Q(){
    var returnValue = (float)Math.Sqrt(2 * A * B / C);

    if (returnValue < D){
        return D;
    }

    return returnValue;
}

编辑:
或者你可以把它清理到这个

public override float Q(){
    var returnValue = (float)Math.Sqrt(2 * A * B / C);

    return returnValue < D ? D : returnValue;
}

【讨论】:

    【解决方案3】:
    public override float Q()
    {
        var result = (float)Math.Sqrt(2 * A* B / C);
        return result < D ? D : result;
    }
    

    【讨论】:

      【解决方案4】:

      除非这是一个技巧问题,因为D 是类的本地,代码应该是这样的:

      public override float Q()
      {
          var result = (float)Math.Sqrt(2 * A* B / C);
          return result < D ? D : result;
      }
      

      但请注意 D 必须是 float 或在返回时转换为 float 如果不是。此外,如果D 不是float,您可能只想做这样的事情,因为它的类型可能无法隐式转换:

      public override float Q()
      {
          var d = (float)D;
          var result = (float)Math.Sqrt(2 * A* B / C);
          return result < d ? d : result;
      }
      

      【讨论】:

        【解决方案5】:

        类似这样的:

        public override float Q(){
            var r = (float)Math.Sqrt(2 * A * B / C);
        
            if (r < D){
                r = D;
            }
        
            return r;
        }
        

        【讨论】:

          猜你喜欢
          • 2015-07-28
          • 2019-05-11
          • 2018-04-18
          • 2018-05-07
          • 2021-08-31
          • 1970-01-01
          • 2020-07-30
          • 2023-02-21
          相关资源
          最近更新 更多