C# 在一行中设置多个变量

C# 在一行中设置多个变量,c#,C#,在perl中,我可以在一行中定义一组变量: my value=0; my (a,b,c)=value; 有没有类似的C#方法来做同样的事情?以下是我所拥有的: const bool free = true; bool t1,t2,t3; private void Form1_Load(object sender, EventArgs e) { //t1,t2,t3=free; } 我相信你可以做t1=t2=t3=免费;然而,它确实让阅读变得更加困难。我不建议这样做。C#不支持完全解

在perl中,我可以在一行中定义一组变量:

my value=0;
my (a,b,c)=value;
有没有类似的C#方法来做同样的事情?以下是我所拥有的:

const bool free = true;
bool t1,t2,t3;

private void Form1_Load(object sender, EventArgs e) {
    //t1,t2,t3=free;
}

我相信你可以做t1=t2=t3=免费;然而,它确实让阅读变得更加困难。我不建议这样做。

C#不支持完全解构分配。因此,没有C#等价物

my @v = (1,3,5);
my ($a,$b,$c) = @v;

但是,正如@guthwolf所指出的,对于标量,您可以写入
t1=t2=t3=free
,它将为每个元素分配相同的值。

C#不支持分配分解。只有一个值可以通过
=
分配给单个变量(尽管
a=b
表达式本身会产生
b
)。因此,在StackOverflow上的帖子中,请避免出现与你的命运、观点和类似的其他与你的问题无关的主题(包括“我是新来的”和“感谢留言”)的冗长无关的文字。请注意,这并不等同于
my(a,b,c)=value
或类似的结构,如Perl、Python、Ruby或Scala中的结构,这些结构在赋值过程中支持分解。相反,相同的值(例如,计算结果
free
)分配给所有变量(例如
t1
t2
t3
)。除了少数例外(例如在while或默认值构造中),我发现这种行为只具有适度的用途。在C#中,
t1=t2=t3=value
相当于
t1=(t2=(t3=value))
,因为赋值运算符是右关联的,计算结果与赋值相同,但不是很特殊。@user2864740该短语是“解构赋值”