2015-09-05 23 views
0

我的課剛剛從java切換到c#,所以我仍然在學習它的語法。這聽起來可能是一個愚蠢的問題,但是我現在堅持了一個小時而沒有回答一個簡單的問題,是否在c#中有+ =?不能在c#中使用+ =?

for (int i = 0; i < users.Count(); i++) { 
      double sum += users[i].getFine(); 

它給了我和錯誤的總和+ =部分說:

「只有分配,調用,遞增,遞減,在等待着,新的對象 表達式可以作爲一個聲明」

+4

定義你在你的循環之前求和並將它用作'sum + = users [i] .getFine();'。 –

+0

你正在每個循環中聲明變量,你不能總結。可能你想從for循環中移出聲明('double sum = 0;'),並在循環內部進行加法運算('sum + = users [i] .getFine();')。 – Styxxy

+0

嘗試閱讀「C#簡而言之」,它是一本關於C#語言(和一些CLR)的各個方面的很好解釋的書籍 –

回答

10

你應該先定義變量,然後嘗試使用+ =

double sum=0; 
for (int i = 0; i < users.Count(); i++) 
    sum += users[i].getFine(); 
改變它

sum += x;等於sum = sum + x ;

您可以瞭解更多的是在MSDN += Operator (C# Reference)

我希望這個簡單的答案原來是有幫助的。

3

它正在工作,因爲它應該是。

此:

double sum += users[i].getFine(); 

等於

double sum = sum + users[i].getFine(); 

而且sum在嘗試將其添加到users[i].getFine此刻不存在。 你正在得到的錯誤意味着,編譯器不知道你正在嘗試做什麼 - 你應該對某個變量進行某些操作,或者增加其他內容,或者等待某些事情,或者執行此消息中的其他任何事情。

此外,該代碼無法按預期工作,因爲它在每個循環都被重寫。 sum應該定義在循環之外。

1

您認爲您的發佈代碼如下所示。基本上在每次循環迭代中,你聲明一個新變量double sum,在這種情況下代碼sum += users[i].getFine();是否有意義。不,這意味着更少,更少邏輯。因此編譯器會拋出錯誤,要求您聲明變量sum超出範圍。

for (int i = 0; i < users.Count(); i++) { 
      double sum += users[i].getFine();