【发布时间】:2016-05-09 21:00:37
【问题描述】:
我有一个我继承的应用程序,但没有原始代码。我已经使用 Reflector 9 对程序集进行了反编译,其中一个生成的模型被标题中的错误所困扰。通常这种错误很简单,但这次却让我感到莫名其妙。完整代码如下,错误在于包含
的行 (((nullable2 = this.Variations) = nullable2.HasValue
Variations 是在代码后面 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)));
}
}
据我所知。我将小数分配给小数。这是一个简单的值分配,但是,我错过了什么?
感谢您的任何建议
【问题讨论】:
-
使用
==运算符进行比较,使用=进行赋值 -
有两行包含
(((nullable2 = this.Variations) = nullable2.HasValue。错误是在if还是return行? -
两行都有。
-
代码被混淆了:尝试减少它:f.e. 'nullable3' 始终为 null,因此 ' ((decimal?) (nullable3 = null))).HasValue' 为 false...
-
我确实尝试减少它,但它导致变量未定义变量的错误。这是一个奇怪的结果,因为我可以想象如果牙套有问题会出现这种情况。但情况似乎并非如此,因为没有其他属性或方法受到影响,所以我回到原来的错误
标签: c# variables variable-assignment