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);”。不过,有人应该杀了你。