Инициализация двух переменных одновременно
Есть ли способ инициализировать эти две переменные одновременно?
в этом примере переменная "время" может быть "" или иметь значение.
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;
}