【问题标题】:Assignment many variable separated by comma in one line. C#在一行中分配多个用逗号分隔的变量。 C#
【发布时间】:2014-09-19 18:56:48
【问题描述】:

抱歉这个愚蠢的问题,但我找不到答案。那么,为什么我不能在 C# 中编写这样的代码:

int a = 10, b = 20, c = 30, d = 40;    
a = b, c = d;

用C++我可以写,没问题。

为什么它不能在 C# 中编译?

【问题讨论】:

  • 如果你想摆脱 a 和 c 的值,为什么不试试:int a = b, c = d;
  • 你写:a = b; c = d;在 C# 中
  • @Surya 我只是想通过例子来澄清我的问题。也许不是很好。但我尽量专注于二线。

标签: c# comma


【解决方案1】:

可以写第一行。这在 C# 中是允许的,并在 C# 语言规范的第 8.5.1 节中进行了说明,其中表明每个 local-variable-declarator 都可以在逗号分隔的列表中:

local-variable-declarators:
    local-variable-declarator
    local-variable-declarators   ,   local-variable-declarator

但是,C#没有像C++那样的comma operator,所以你必须拆分第二行:

int a = 10, b = 20, c = 30, d = 40; 
a = b;
c = d;

【讨论】:

  • 您能解释一下,C# 中的逗号运算符是什么意思吗?为什么我可以用逗号初始化变量,在for中写语句却不能写这样的代码?
  • @NikitaSivukhin C# 中没有逗号运算符。在 C++ 中合法的唯一原因是该语言中有一个运算符允许将多个表达式放置在预期单个表达式的位置(C++ 逗号运算符)。该运算符在 C# 中不存在 - 它只是不是语言的一部分。
  • 为什么我可以在这段代码中写 i = x, j = y:for (int i = 0, j = 0;; i = x, j = y) {...} 这是为“for”而特别设计的?
  • @NikitaSivukhin 是的 - For 循环允许 C# 中的“语句表达式列表”(列表是关键)。
【解决方案2】:

只是因为 C# 不是 C++,而且这两种语言彼此不同。

或者,更准确地说:C# 语言不是 C++ 语言的超集。因此,并非每个 C++ 程序都是有效的 C# 程序。

【讨论】:

    【解决方案3】:

    第一行很好。但是,第二行包含两个单独的语句。语句必须用分号;分隔。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-14
      • 2013-03-23
      • 1970-01-01
      • 2013-10-07
      • 2019-08-03
      • 1970-01-01
      相关资源
      最近更新 更多