2014-09-19 82 views
2

对不起,这个愚蠢的问题,但我找不到答案。所以,为什么我不能在C#中编写这样的代码:分配许多变量,在一行中用逗号分隔。 C#

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

在C++中,我可以编写它,它会没问题。

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

+0

为什么不试试:'int a = b,c = d;'如果你想摆脱a和c的值? – Surya 2014-09-19 19:09:43

+0

你写:a = b; c = d;在C# – Yogee 2014-09-19 19:15:53

+0

@Surya我只是想通过示例来澄清我的问题。也许它不是很好。但我试图专注于第二线。 – 2014-09-19 19:22:49

回答

10

可以写第一行。这是允许在C#和C#语言规格,第8.5.1规定了它表明,每个局部变量声明可以在列表中的逗号分隔:

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

然而, C#没有一个comma operator像C++,所以你要分割的第二行:

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

你能解释一下,C#中的逗号运算符是什么意思? 为什么我可以用逗号初始化varibale,在for语句中写入语句但不能写这样的代码? – 2014-09-19 19:01:08

+3

@NikitaSivukhin C#中没有逗号运算符。在C++中合法的唯一原因是该语言中有一个运算符,允许将多个表达式放在需要单个表达式的地方(C++逗号运算符)。该运算符在C#中不存在 - 它只是不属于该语言的一部分。 – 2014-09-19 19:02:10

+0

为什么我可以在这段代码中写i = x,j = y: 'for(int i = 0,j = 0 ;; i = x,j = y){...}' “对于”? – 2014-09-19 19:06:07

1

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

3

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

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