我使用下面这行代码检查小数是否相等,但它显示语法错误。
if (ProgramVariables.MSR_AR_System == ProgramVariables.MSR_AR_EB_1 == ProgramVariables.MSR_AR_EB_2 == ProgramVariables.MSR_AR_EB_3)正确的方法是什么?
发布于 2013-01-24 17:12:06
它应该是:
if (ProgramVariables.MSR_AR_System == ProgramVariables.MSR_AR_EB_1
&& ProgramVariables.MSR_AR_EB_1 == ProgramVariables.MSR_AR_EB_2
&& ProgramVariables.MSR_AR_EB_2 == ProgramVariables.MSR_AR_EB_3)发布于 2013-01-24 17:12:44
你不能只做A == B == C == D。您必须使用&& (AND)运算符,如下所示:
if (a == b && b == c && c == d && d == e)
{
// Do something
}也就是说if a equals b AND b equals c AND c equals d AND d equals e then。
这一切为什么要发生?因为equality operator接受两个相同类型的参数。a == b产生一个布尔值(true或false),您将此结果与c的下一个值进行比较,后者仍然是decimal类型,并且您不能将boolean与decimal进行比较,因为它们不是同一类型。
发布于 2013-01-24 17:16:04
==运算符是一个二元运算符,从左到右进行计算。这意味着,它首先进行计算。
ProgramVariables.MSR_AR_System == ProgramVariables.MSR_AR_EB_1,它给出一个布尔值,然后将这个布尔值与
(true or false) == ProgramVariables.MSR_AR_EB_2再给出一个布尔值,然后将第二个布尔值与
(true or false) == ProgramVariables.MSR_AR_EB_3您会得到一个错误,因为您比较了不兼容类型的值。
比较多个值的正确方法是通过逻辑&& (and)运算符将它们组合在一起,例如
if (ProgramVariables.MSR_AR_System == ProgramVariables.MSR_AR_EB_1
&& ProgramVariables.MSR_AR_System == ProgramVariables.MSR_AR_EB_2
&& ProgramVariables.MSR_AR_System == ProgramVariables.MSR_AR_EB_3)https://stackoverflow.com/questions/14497537
复制相似问题