C# 同时初始化两个变量
有没有办法同时初始化这两个变量 在本例中,“time”变量可以是“”或具有值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
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不想这样做。