Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 同时初始化两个变量_C#_Variables_If Statement_Initialization_Shorthand If - Fatal编程技术网

C# 同时初始化两个变量

C# 同时初始化两个变量,c#,variables,if-statement,initialization,shorthand-if,C#,Variables,If Statement,Initialization,Shorthand If,有没有办法同时初始化这两个变量 在本例中,“time”变量可以是“”或具有值 var variable1 = string.IsNullOrEmpty(time) ? string.Empty : "value"; var variable2 = string.IsNullOrEmpty(time) ? "value" : string.Empty; 不可能。但是您可以创建一些帮助器类来保存这两个变量。或者您可以使用一些现成的,如Tuple: var variable = string.IsN

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

在本例中,“time”变量可以是“”或具有值

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

不可能。但是您可以创建一些帮助器类来保存这两个变量。或者您可以使用一些现成的,如
Tuple

var variable = string.IsNullOrEmpty(time) ? Tuple.Create(string.Empty, "value") 
                                          : Tuple.Create("value", string.Empty);
然后以
variable.Item1
variable.Item2
的形式访问这两个值


注意:明智地使用它,因为变量通常更好,因为它们有名称,因此有一些含义。太多的
元组
和所有这些
项1
项2
很快就会变得不清楚,它们的用途是什么。

否。假设
在这两种情况下“值”
是相同的,您最多能做的就是替换“值”第二行是
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;
    }

给你,一个完全不可读的烂摊子:

string time = null;

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

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

也许您可以解释为什么需要这样做?当一个得到一个值时,另一个得到另一个值,反之亦然,条件相同。所以我想有一种方法可以把它缩短。缩短通常意味着可读性降低。“我不会担心缩短2行代码。@DavidG,除非对评估条件有很大的惩罚。”。(是的..我知道..过早优化)如果你关心两次检查条件,你可以使用简单的If语句。这是分配相同的值,但OP不想这样做。