Проверьте, не равен ли элемент массива в одной строке C # - PullRequest
3 голосов
/ 11 апреля 2019

Я получил массив neighbor (состоящий из объектов Tile), который всегда имеет длину 4, независимо от того, заполнены все элементы или нет.Я хочу просканировать этот массив и изменить цвет PB, содержащегося в плитке, если этот элемент / позиция не нулевой.Я могу сделать это с помощью стандартной if neighbors[i] = null проверки, используя следующий код:

for (int i = 0; i < Neighbors.Count(); i++)
{
    if (Neighbors[i] != null)
       Neighbors[i].TilePB.Backcolor = Color.Red;
    else
       continue; // just put that here for some more context.
}

Но мне было интересно, смогу ли я сделать это в одну строку, подобно использованию?оператор.Я пытался использовать троичный оператор, но я не могу continue использовать один (троичный оператор, который я пробовал: Neighbors[i] != null ? /* do something */ : continue, источник, почему он не работает: Почему разрыв не может использоваться с троичным оператором?).

Есть ли другой способ проверить, является ли элемент массива нулевым, используя только одну строку (желательно без использования хака)?

Ответы [ 3 ]

4 голосов
/ 11 апреля 2019

Для этого вы можете использовать linq:

foreach (var item in Neighbors.Where(n => n != null))
{
    // do something
}
2 голосов
/ 11 апреля 2019

, если вам нужно возвращаемое значение вашего действия, выберите

var result = neighbors.Where(x => x != null).Select(x => MyAction(x)).ToList();
2 голосов
/ 11 апреля 2019

Как насчет

neighbors.Where(x => x != null).ToList().ForEach(x => DoSomething(x));
...