同时初始化两个变量

时间:2014-11-19 13:00:47

标签: c# variables if-statement initialization shorthand-if

有没有办法同时初始化这两个变量?

在这个例子中"时间"变量可以是""或者有价值。

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

4 个答案:

答案 0 :(得分:1)

在这里,一个完全不可读的混乱:

string time = null;

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

如果你不知道,这不是一个严肃的建议。

答案 1 :(得分:-1)

不可能。但是你可以创建一些辅助类来保存这两个变量。或者您可以使用一些开箱即用的功能,例如Tuple

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

然后将这两个值视为variable.Item1variable.Item2

注意:明智地使用 ,因为变量通常更好,因为它们有名称,因此 - 某些含义。所有TuplesItem1过多的Item2可能会很快变得不清楚,它们的用途是什么。

答案 2 :(得分:-1)

没有。假设"value"在两种情况下都相同,那么你可以做的最多就是替换" value"第二行有variable1

答案 3 :(得分:-2)

可以将单行代码上的多个变量初始化为相同的值:

    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;
    }