0

嗨,我的模型中有一个名为 BMI 的属性,它基本上是一些逻辑,它返回从名为 CalculateBMI 的方法计算出的数字,但这始终返回 0,即使我在方法中的返回上设置了断点,重量和高度包含数字,但 _bmi 永远不会被分配任何东西

BMI属性:

 private int _bmi;
        [DisplayName("BMI")]
        public int BMI 
        {
            get {return _bmi;}
            set 
            { 
                _bmi = value;
                _bmi = CalculateBMI();

            } 
        }

计算BMI方法:

  public int CalculateBMI()
        {

            _bmi = Weight / (Height * Height);
            return _bmi; 
        }
4

3 回答 3

2

所以我相信我们在评论中所说的就是你所需要的:

public double BMI { get { return Weight / (Height * Height); } }

@ataravati 关于属性是不必要的也是正确的,DisplayName因为它与属性名称相同。

您还应该将类型更改为,double因为结果应该是浮点值。我还要确保你的WeightHeight属性也是doubles ,这样你就不会从整数除法中得到零。

于 2013-08-23T17:35:15.420 回答
1

不查看您的代码,在其他回复中指出了一些问题,您需要检查您的值。

导致除法的零可能来自:

  • Weight= 0
  • 除法结果四舍五入为 0,因为您的BMI变量是类型int

所以...尝试调试并使用实际值进行数学运算。如果结果小于 0.5,它很可能会四舍五入为 0。

您可以将 BMI 类型更改为DecimalDouble尝试。

于 2013-08-23T18:48:24.573 回答
0

您的属性应该是这样的,因为您不想将其设置为任何内容。它是即时计算的,您只需要对其进行只读访问:

public int BMI 
{
    get 
    { 
        return CalculateBMI();
    }
}

顺便说一句,当显示名称与属性名称相同时,您不需要 DisplayName 属性。

于 2013-08-23T17:35:55.477 回答