不能应用于操作数'string'和'decimal'

时间:2013-08-23 08:47:59

标签: c# unit-testing

我正在编写一些测试来查看字典中的值是否匹配。一个例子是'TestOperatorMatchNotFoundIfValueNotNumeric'等。我在将字符串与字符串进行比较时已成功编写测试但现在我必须检查该值是否为数字(使其无效)

我试图使用先前测试中使用的逻辑进行一些调整但是我收到错误消息'操作'=='不能应用于'string'和'decimal'类型的操作数。下面是我正在处理的代码,第8和第9行有两条错误消息。非常感谢任何帮助。

 public bool IsMatch(Dictionary<String, String> variableData)
    {
        decimal outputValue;
        bool isANumber = Decimal.TryParse("StringValue", out outputValue);

        if (variableData.ContainsKey(this.value1Name))
        {
            if (comparisonOperator == "==")
            {
                if (variableData[this.value1Name] == this.value2Literal) //Error Msg
                {
                    return true;
                }
            }
            else
            {
                if (variableData[this.value1Name] != this.value2Literal) //Error Msg
                {
                    return true;
                }
            }
        }

        return false;
    }

1 个答案:

答案 0 :(得分:1)

你不能比较1.00 ==“1.00”,你可以转换.ToDecimal(“1.00”)并进行比较。 但我不推荐那个。

您会看到字典中包含字符串值。

所以你的代码会变成

Convert.ToDecimal(variableData[this.value1Name]) == this.value2Literal