C# 增量整数上的三元算子
有人能告诉我为什么下面的代码不起作用吗C# 增量整数上的三元算子,c#,ternary-operator,C#,Ternary Operator,有人能告诉我为什么下面的代码不起作用吗 int prePos = 0; int preNeg = 0; int postPos = 0; int postNeg = 0; for (int i = 0; i < pin1.GetLength(0); i++) { preNeg++ ? pin1[i, 0] < 0 : prePos++; //not working pin2[i, 0] < 0
int prePos = 0;
int preNeg = 0;
int postPos = 0;
int postNeg = 0;
for (int i = 0; i < pin1.GetLength(0); i++)
{
preNeg++ ? pin1[i, 0] < 0 : prePos++; //not working
pin2[i, 0] < 0 ? postNeg++ : postPos++; //not working
}
preNeg++ ? pin1[i, 0] < 0 : prePos++; //not working
pin2[i, 0] < 0 ? postNeg++ : postPos++; //not working
intpreps=0;
int-preNeg=0;
int pospostos=0;
int-postNeg=0;
对于(int i=0;i
因此,条件是如果pin1[i,0]
小于零,preNeg
增加1。否则应激活preps。我可以用正常的方法来做,但为什么这个三元组不起作用呢
int prePos = 0;
int preNeg = 0;
int postPos = 0;
int postNeg = 0;
for (int i = 0; i < pin1.GetLength(0); i++)
{
preNeg++ ? pin1[i, 0] < 0 : prePos++; //not working
pin2[i, 0] < 0 ? postNeg++ : postPos++; //not working
}
preNeg++ ? pin1[i, 0] < 0 : prePos++; //not working
pin2[i, 0] < 0 ? postNeg++ : postPos++; //not working
a将有1个
三元运算符的语法是
var variable = condition ?
value_to_return_in_variable_if_condition_true :
value_to_return_in_variable_if_condition_false;
此外,三元运算符用于为单个变量赋值。不包含两个变量。三元运算符是一种运算符,其计算结果为表达式(表示值的东西),因此不能再用作语句,就像使用
+
的表达式可以用作语句一样(1+1;
作为语句是非法的)
使三元运算符的这种特殊用法有所不同的是增量(++
)运算符的使用。使用++
运算符对变量执行操作(将其递增1)并输出值(当++
置于变量之后时,变量在递增之前的值)
因此,以下内容将实现您正在尝试做的事情,但是您将留下一个未使用的变量(更不用说不清楚的代码),因此我看不到这在实践中被使用
var currentValue = pin1[i, 0] < 0 ? postNeg++ : postPos++;
var currentValue=pin1[i,0]<0?postNeg++:postPos++;
如前所述,您最好选择正常的
if
/else
。这就是它的作用。三元运算符的结果是一个表达式。这和写3是一样的代码>作为一行代码。这是行不通的。如果你能用普通的方法来做,考虑到你确实需要一个其他条件,那么你为什么不保持这样呢?另一种方法:“preNeg+=pin[i,0]<0?1:(++preps==preps?0:0);”。不过,有人应该杀了你。