Инициализация двух переменных одновременно

Есть ли способ инициализировать эти две переменные одновременно?

в этом примере переменная "время" может быть "" или иметь значение.

var variable1 = string.IsNullOrEmpty(time) ? string.Empty : "value";
var variable2 = string.IsNullOrEmpty(time) ? "value" : string.Empty;

4 ответа

Решение

Невозможно. Но вы можете создать некоторый вспомогательный класс для хранения этих двух переменных. Или вы можете использовать некоторые из готовых, как Tuple:

var variable = string.IsNullOrEmpty(time) ? Tuple.Create(string.Empty, "value") 
                                          : Tuple.Create("value", string.Empty);

а затем получить доступ к этим двум значениям как variable.Item1 а также variable.Item2,

Примечание: используйте его с умом, так как переменные, как правило, лучше, потому что они имеют имена, и, следовательно, - некоторое значение Очень много Tuples со всеми этими Item1 а также Item2 может быстро стать неясным, для чего они предназначены.

Вот, пожалуйста, совершенно нечитаемый беспорядок:

string time = null;

string variable1, variable2 = (variable1 = string.IsNullOrEmpty(time) ? string.Empty : "value") == string.Empty ? "value" : string.Empty;

Если вы не можете сказать, это не серьезное предложение.

Нет, если предположить "value" то же самое в обоих случаях самое большее, что вы могли бы сделать, это заменить "значение" на variable1 во второй строке.

Можно инициализировать несколько переменных в одной строке кода одним и тем же значением:

    string variable2;
    var variable1 = variable2 =(string.IsNullOrEmpty(time) ? string.Empty : "value");

Тем не менее, я думаю, что это нечитаемо и будет избегать этого.

С тем, что вы пытаетесь сделать (из вашего комментария), я бы использовал простой оператор if, чтобы проверка IsNullOrEmpty выполнялась только один раз.

    string variable1;
    string variable2;
    if (string.IsNullOrEmpty(time))
    {
        variable1 = null;
        variable2 = "value";
    }
    else
    {
        variable1 = "value";
        variable2 = null;
    }
Другие вопросы по тегам