C# 如何将两个不同的值同时分配给两个变量

C# 如何将两个不同的值同时分配给两个变量,c#,C#,我想同时给多个变量赋值。我知道它在python中是如何工作的,但我需要一个C#的等价物 我发现如果我想给一个新变量赋值,我可以这样做 int a = 1 , b = 1; //This works fine but now I need to set the variables again a = b , b = a + b; //But i can't do it like that //I know that in python it would look like this (a , b

我想同时给多个变量赋值。我知道它在python中是如何工作的,但我需要一个C#的等价物

我发现如果我想给一个新变量赋值,我可以这样做

int a = 1 , b = 1;
//This works fine but now I need to set the variables again
a = b , b = a + b;
//But i can't do it like that
//I know that in python it would look like this (a , b = b , a+b)
这是有效的C#,使用C#7中引入的元组:

我不会说这是惯用的C#-我从未在野外见过它,我想很多人都不知道你能做到这一点-但它是有效的

编译器实际上并没有使用ValueTuple类来执行此操作-它合成以下代码:

int a = 1;
int b = 2;
int temp1 = b;
int temp2 = a + b;
a = temp1;
b = temp2;
这是有效的C#,使用C#7中引入的元组:

我不会说这是惯用的C#-我从未在野外见过它,我想很多人都不知道你能做到这一点-但它是有效的

编译器实际上并没有使用ValueTuple类来执行此操作-它合成以下代码:

int a = 1;
int b = 2;
int temp1 = b;
int temp2 = a + b;
a = temp1;
b = temp2;

我不知道我是否理解正确,但这就是你想要的吗

static void Main(string[] args)
    {
      int a = 1, b = 1;
      a = b = (a + b);
      Console.WriteLine($"{a} {b}");
      Console.ReadKey();
    }

我不知道我是否理解正确,但这就是你想要的吗

static void Main(string[] args)
    {
      int a = 1, b = 1;
      a = b = (a + b);
      Console.WriteLine($"{a} {b}");
      Console.ReadKey();
    }
会 b+=b; 为你工作,因为a==b

会 b+=b;
为你工作,因为a==b

这看起来像是C#问题。为什么使用python标记?我删除了它。这只是一个语法问题,为什么你这么做会很有趣?我的意思是,在编译程序和生成机器代码之后,它们将被视为两行完全不同的代码,无论它们是否在同一行中@PhiloJunkie-Python对
a,b=b,a+b的多重赋值实际上得到了与
a=b不同的结果;b=a+b
@TigerhawkT3对不起,我在问之前应该多加注意!你说得对。这个问题可能会重复。为什么使用python标记?我删除了它。这只是一个语法问题,为什么你这么做会很有趣?我的意思是,在编译程序和生成机器代码之后,它们将被视为两行完全不同的代码,无论它们是否在同一行中@PhiloJunkie-Python对
a,b=b,a+b的多重赋值实际上得到了与
a=b不同的结果;b=a+b
@TigerhawkT3对不起,我在问之前应该多加注意!你是对的。可能的复制品不会做正确的事情。结果应该是“12”而不是“22”。这样做是不对的。结果应该是“12”而不是“22”。不,如果我这样做的话,结果是相同的,就像我只计算a=b,然后计算b=b+aNo,如果我这样做的话,结果是相同的,就像我只计算a=b,然后计算b=b+a