三元运算符在 if 或语句中不起作用
Ternary operator not working in if or statement
我有 if 或语句,我在其中放置了一些条件和一个三元运算符。我注意到如果我输入 ?: 运算符,我的 if 语句总是会出错。我想知道是什么原因造成的,因为真正的条件出现在评估 ?: 运算符之前,所以它甚至不应该检查它。
row.number == barcode -> false;
row.eancode == barcode -> true;
row.packageean == barcode -> false;
row.IspackingcodeNull() -> true;
if (row.number == barcode
|| row.eancode == barcode
|| row.packageean == barcode
|| row.IspackingcodeNull() ? false : row.packingcode == barcode
|| row.producerproductcode == barcode
|| row.alternativebarcode1 == barcode)
你实际做的是这样的:
if
(
(
row.number == barcode
|| row.eancode == barcode
|| row.packageean == barcode
|| row.IspackingcodeNull()
)
? false
: row.packingcode == barcode || row.producerproductcode == barcode || row.alternativebarcode1 == barcode
)
你要的是这个:
if (row.number == barcode
|| row.eancode == barcode
|| row.packageean == barcode
|| (row.IspackingcodeNull() ? false : row.packingcode == barcode)
|| row.producerproductcode == barcode
|| row.alternativebarcode1 == barcode)
我有 if 或语句,我在其中放置了一些条件和一个三元运算符。我注意到如果我输入 ?: 运算符,我的 if 语句总是会出错。我想知道是什么原因造成的,因为真正的条件出现在评估 ?: 运算符之前,所以它甚至不应该检查它。
row.number == barcode -> false;
row.eancode == barcode -> true;
row.packageean == barcode -> false;
row.IspackingcodeNull() -> true;
if (row.number == barcode
|| row.eancode == barcode
|| row.packageean == barcode
|| row.IspackingcodeNull() ? false : row.packingcode == barcode
|| row.producerproductcode == barcode
|| row.alternativebarcode1 == barcode)
你实际做的是这样的:
if
(
(
row.number == barcode
|| row.eancode == barcode
|| row.packageean == barcode
|| row.IspackingcodeNull()
)
? false
: row.packingcode == barcode || row.producerproductcode == barcode || row.alternativebarcode1 == barcode
)
你要的是这个:
if (row.number == barcode
|| row.eancode == barcode
|| row.packageean == barcode
|| (row.IspackingcodeNull() ? false : row.packingcode == barcode)
|| row.producerproductcode == barcode
|| row.alternativebarcode1 == barcode)