嗨我的模型中有一个名为BMI的属性,它基本上是一些逻辑,它返回一个从一个名为CalculateBMI的方法计算的数字,但是这总是返回0,即使我在方法的返回上放了一个断点重量和高度包含数字,但_bmi永远不会分配任何东西
BMI属性:
private int _bmi;
[DisplayName("BMI")]
public int BMI
{
get {return _bmi;}
set
{
_bmi = value;
_bmi = CalculateBMI();
}
}
CalculateBMI方法:
public int CalculateBMI()
{
_bmi = Weight / (Height * Height);
return _bmi;
}
答案 0 :(得分:2)
所以我相信我们在评论中所说的就是你需要的是:
public double BMI { get { return Weight / (Height * Height); } }
@ataravati对于DisplayName
属性是不正确的,因为它与属性名称相同。
您还应该将类型更改为double
,因为结果应该是浮点值。我还要确保您的Weight
和Height
属性也是double
,因此您不会从整数除法中得到零。
答案 1 :(得分:1)
不看你的代码,其他回复中指出了一些问题,你需要检查你的价值。
导致分裂的零可以来自:
Weight
= 0 BMI
变量的类型为int
所以...尝试调试并使用实际值进行数学计算。如果结果小于0.5,则最有可能舍入为0。
您可以将BMI类型更改为Decimal
或Double
以尝试。
答案 2 :(得分:0)
你的财产应该是这样的,因为你不想把它设置成任何东西。它是在运行中计算的,您只需要对它进行只读访问:
public int BMI
{
get
{
return CalculateBMI();
}
}
顺便说一句,当显示名称与属性名称相同时,您不需要DisplayName属性。