MVC模型:作业的左侧必须是变量,属性或索引器

时间:2016-02-01 12:01:55

标签: c# variables variable-assignment

我有一个我继承的应用程序,但没有原始代码。我使用Reflector 9反编译了程序集,其中一个结果模型卡在标题中。通常这种错误很简单,但这一次令我感到困惑。完整代码如下,错误在于包含

的行
  (((nullable2 = this.Variations) = nullable2.HasValue 

变体是在代码中使用

在10行后定义的属性
  public decimal? Variations { get; set; }

该功能的完整代码是:

 public decimal GMActual
    {
        get
        {
            decimal? nullable2;
            decimal? nullable3;
            decimal? pOValue = this.POValue;
            if ((pOValue.HasValue ? pOValue.GetValueOrDefault() : (((nullable2 = this.Variations) = nullable2.HasValue ? new decimal?(nullable2.GetValueOrDefault()) : ((decimal?) (nullable3 = null))).HasValue ? nullable2.GetValueOrDefault() : 0M)) == 0M)
            {
                return 0M;
            }
            pOValue = this.POValue;
            pOValue = this.MonthActual;
            pOValue = this.POValue;
            return (((pOValue.HasValue ? pOValue.GetValueOrDefault() : (((nullable2 = this.Variations) = nullable2.HasValue ? new decimal?(nullable2.GetValueOrDefault()) : ((decimal?) (nullable3 = null))).HasValue ? nullable2.GetValueOrDefault() : 0M)) - (pOValue.HasValue ? pOValue.GetValueOrDefault() : (((nullable2 = this.CostOnSage) = nullable2.HasValue ? new decimal?(nullable2.GetValueOrDefault()) : ((decimal?) (nullable3 = null))).HasValue ? nullable2.GetValueOrDefault() : 0M))) / (pOValue.HasValue ? pOValue.GetValueOrDefault() : (((nullable2 = this.Variations) = nullable2.HasValue ? new decimal?(nullable2.GetValueOrDefault()) : null).HasValue ? nullable2.GetValueOrDefault() : 0M)));
        }
    }

据我所见。我将十进制分配给小数。这是一个直接的值赋值,但是,我错过了什么?

感谢您的任何建议

3 个答案:

答案 0 :(得分:0)

你想用代码实现什么目标?

你是想检查平等吗?如果是这样,那么将需要在return语句中的所有实例中替换= with ==。

答案 1 :(得分:0)

这对我来说没有任何意义:(((nullable2 = this.Variations) = nullable2.HasValue,从我在这里看到的,这是if语句的条件部分。我想你想做的更像是这样:

nullable2 = this.Variations
nullable2.HasValue ? ... //and the rest of the statement

或者你试图检查它是否为空且等于变化?然后这应该工作:

(nullable2 != null && nullable2 == this.Variations) ? ...//the rest of the statement.

答案 2 :(得分:0)

反编译器接缝搞乱了代码 - 尝试另一个代码进行检查。你怎么知道,你'修复'是正确的?

PS:你想偷窃那段代码吗?它被混淆了:原来的程序员接缝不希望你看到那个代码;)。