2014-09-19 76 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#程序。