语句返回无效输出

时间:2013-01-24 10:57:10

标签: c# operators conditional

请参阅以下代码

   totLen = (r.Field<int>("Quantity") <= 0 ? 1 : r.Field<int>("Quantity")) *
   ((r.Field<decimal>("Breath") <= 0 ? 1 : r.Field<decimal>("Breath")) * 
   (r.Field<decimal>("Length") <= 0 ? 1 : r.Field<decimal>("Length")) * 
   (r.Field<decimal>("Height") <= 0 ? r.Field<decimal>("Height") : r.Field<decimal>("Height")))

在这段代码中,我认为如果 r.Field(COLUMN NAME)的任何值都为0,那么使用替换为仅用于乘法?并且: 条件运算符,但它给出了错误的输出并返回ZERO(0)...
任何人都可以告诉我为什么会这样吗?

2 个答案:

答案 0 :(得分:1)

如果“高度”字段为0,您仍然在乘法中使用它。

更改

r.Field<decimal>("Height") <= 0 ? r.Field<decimal>("Height") : r.Field<decimal>("Height")

r.Field<decimal>("Height") <= 0 ? 1 : r.Field<decimal>("Height")

答案 1 :(得分:1)

 totLen = (r.Field<int>("Quantity") <= 0 ? 1 : r.Field<int>("Quantity")) *
 ((r.Field<decimal>("Breath") <= 0 ? 1 : r.Field<decimal>("Breath")) * 
 (r.Field<decimal>("Length") <= 0 ? 1 : r.Field<decimal>("Length")) * 
 (r.Field<decimal>("Height") <= 0 ? 1 : r.Field<decimal>("Height")))

试试这个