Hasvalue в операторе переключения - PullRequest
1 голос
/ 16 июня 2020

Я пытаюсь заполнить существующую переменную некоторым значением из разных существующих переменных, отдавая приоритет первой переменной с заполненным значением.

Я имею в виду следующее:

У меня есть переменная A, которую необходимо установить из 4 других переменных: B, C, D и E. Все 5 являются строкой, допускающей значение NULL. Но я хочу установить его приоритет только в порядке от B до E.

Это пример, который я хочу получить:

switch(HasValue())
{
   case(B):
        A = B;
        break;
   case(C):
        A = C;
        break;
   case(D):
        A = D;
        break;
   case(E):
        A = E;
        break;
   default:
        A = string.empty;
        break;

Итак, если переменная D имеет значение, установите A как D . Если B и D имеют оба значения, выберите B.

Но switch ожидает значение, а не оператор или метод.

Я пытался сделать это с большим количеством if else заявление, но это становится действительно большой сверхурочной работой. Мне нужно что-то более компактное, где я смогу добавить новые значения позже.

Есть ли способ добиться этого или есть другие способы лучше?

Ответы [ 2 ]

7 голосов
/ 16 июня 2020

Вы можете попробовать объединить ?? оператор:

 A = B ?? C ?? D ?? E ?? string.Empty;
1 голос
/ 16 июня 2020

Предполагая, что HasValue - это какой-то метод, который вы определили для строки, вы можете поместить их в коллекцию и использовать LINQ:

A = new [] { B, C, D, E }.FirstOrDefault(s => s.HasValue()) ?? string.Empty;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...