Int, чтобы bool с троичным оператором - PullRequest
0 голосов
/ 04 ноября 2018

Существует метод подсчета равных чисел в возрастающем массиве:

public void CheckArr (int [] array)
{
    int count = 0;
    int prev = array [0];
    bool inPair = false;

    for (int i = 1; i <array.Length; i ++)
    {
        if (array [i] == prev)
        {
            count + = inPair? 1:2;
            inPair = true;
        }
        else
        {
            prev = array [i];
            inPair = false;
        }
    }
    Console.WriteLine (count);
}

Не могу понять выражение: count + = inPair? 1:2; Как int приравнивается к bool? Как это выглядит, если переписать его в if / else?

1 Ответ

0 голосов
/ 04 ноября 2018

Когда вы пишете выражение типа

count += inPair? 1:2;

Это как писать так:

if (inPair) {
  count += 1;
} else {
  count += 2;
}

Он не делает int равным bool, он делает счет равным 1, если bool истинно, и равен 2, если ваш логический тип равен false в вашем примере.

...