2012-07-02 38 views
0

爲什麼這段代碼不起作用?爲什麼循環想在c#中使用函數的參數?

private void Function(int starts , int ends) 
{ 
    int i = starts; 
    int z = ends; 

    for(i; i < z; i++) 
    { 
     [...] 
    } 
} 

這就是說:錯誤3只能使用賦值,調用,遞增,遞減和新的對象表達式作爲語句。

如何使代碼工作?

回答

7
What to do to make code work? 

如何

for (; i < z; i++) 
{ 
    [...] 
} 

爲什麼創建一個額外的變量'z'時,你可以做

for (int i = starts; i < ends; i++) 
{ 
    [...] 
} 

爲什麼您的代碼不會不工作!

因爲for循環語法

for (initializer; condition; increment or decrement) 
{ 

} 

你沒有初始化的初始化i。你可以初始化它(作爲我的第二個片段),或者如果你正在初始化它在一些早期的語句(作爲我的第一個片段),刪除初始化。

+1

或for(int i = starts; i LadislavM

+0

他的代碼和你的第二個代碼有什麼區別?都將從我開始 – aliboy38

+0

@ aliboy38:兩者都將從我開始,但我正在初始化它for循環 –

1

for循環的第一部分需要初始化語句。 i不是一個聲明。如果您不想初始化任何東西,你可以離開的那部分空白,在Nikhil的答案:

for(; i < z; i++) 
{ 
    [...] 
} 
0

不要用外面定義的變量在for循環索引。

private void Function(int starts , int ends) 
{ 
    // int i = starts; // don't do it. you're exposing yourself to headaches if/when you lose control of the value of i 
    int z = ends; 

    for(int i = starts; i < z; i++) //first statement of for loops initializes the indexer 
    { 
     [...] 
    } 
} 
2

i本身並不是一個聲明,它是一個表達式。就像你可以 - 不要簡單地在你的代碼的某個地方寫i;一樣。 for循環的初始化部分需要初始化;然而,如果(就像這裏的情況)循環已經被初始化(已經設置了i),你可以像Nikhil所顯示的那樣忽略它。只需做for(;i<z;i++)

0

我認爲這是更好的答案是不是?

private void Function(int starts , int ends) 
{ 
    for(int i = starts; i < ends; i++) 
    { 
     [...] 
    } 
} 
相關問題