【问题标题】:Multiple inline assignments in one statement in c#c# 一个语句中的多个内联赋值
【发布时间】:2012-08-20 15:44:38
【问题描述】:

显然以下在 c# 中完全没问题;

int a;
int b = a = 2;

是否可以在一条语句中在 c# 中进行多个变量赋值?

即类似的东西;

int a = (int b = 2);

【问题讨论】:

  • 你为什么要折磨那可怜的无辜的无害语法?
  • @MarcGravell 因为想想我们可以节省的周期。我们会变得富有!
  • @maxp - 考虑未来的维护者。不要忽视代码的可读性。
  • @P.Brian.Mackey 这个问题纯粹是出于学术原因!当我读到一些类似的代码时,我的脑海中闪过这个想法。

标签: c# variable-assignment


【解决方案1】:

如果我们看:

int a;
int b = a = 2;

本质上是a=2;,然后是b=a;(但没有额外的评估)。所以我们可以通过颠倒顺序得到相似的结果:

int a = 2, b = a;

但是:我会说有点犹豫:也请优先考虑可读性。

【讨论】:

    【解决方案2】:

    据我所知没有。我知道的唯一变化是:

    int a = 2, b = 2;
    

    【讨论】:

      【解决方案3】:

      可能与您将得到的一样接近。

      int a, b = a = 2;
      
      Console.WriteLine(a.ToString()); // 2
      Console.WriteLine(b.ToString()); // 2
      

      【讨论】:

        【解决方案4】:

        你是说这个吗?

        int a = 2, b = 2;
        

        工作正常

        【讨论】:

          【解决方案5】:

          不,但你可以做

          int a = 2, b = a;
          

          这里将初始化a,然后将b初始化为与a相同的值。

          int a, b = 2;
          

          int a = 2, b = 2;
          

          如你所说

          int a = b = 2;
          

          【讨论】:

          • 我认为int a, b = 2; 只会初始化 b 而留下未初始化的 a,还是我错了?
          • @CarstenSchütte:作为值类型 a 将得到 0。
          猜你喜欢
          • 1970-01-01
          • 2015-11-16
          • 2011-10-31
          • 2015-02-16
          • 1970-01-01
          • 1970-01-01
          • 2021-11-23
          • 1970-01-01
          • 2014-12-25
          相关资源
          最近更新 更多