在一行中分配多个用逗号分隔的变量。 C#

Posted

技术标签:

【中文标题】在一行中分配多个用逗号分隔的变量。 C#【英文标题】:Assignment many variable separated by comma in one line. 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 我只是想通过例子来澄清我的问题。也许不是很好。但我尽量专注于二线。 【参考方案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】:

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

【讨论】:

以上是关于在一行中分配多个用逗号分隔的变量。 C#的主要内容,如果未能解决你的问题,请参考以下文章

用php从mysql列数据中分离值

将逗号分隔字符串的熊猫列转换为虚拟变量

将多个用逗号分隔的整数分配给 C 中的 int - 为啥会这样?做啥的? [复制]

有一txt文件一行中有三个数据,用逗号分隔,在qt中如何把这三个数据读出来,并保存到变量中

在变量 BASH 的一行中用逗号分隔值

在c#中拆分逗号分隔多个字符串[重复]