爲什麼這段代碼不起作用?爲什麼循環想在c#中使用函數的參數?
private void Function(int starts , int ends)
{
int i = starts;
int z = ends;
for(i; i < z; i++)
{
[...]
}
}
這就是說:錯誤3只能使用賦值,調用,遞增,遞減和新的對象表達式作爲語句。
如何使代碼工作?
爲什麼這段代碼不起作用?爲什麼循環想在c#中使用函數的參數?
private void Function(int starts , int ends)
{
int i = starts;
int z = ends;
for(i; i < z; i++)
{
[...]
}
}
這就是說:錯誤3只能使用賦值,調用,遞增,遞減和新的對象表達式作爲語句。
如何使代碼工作?
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
。你可以初始化它(作爲我的第二個片段),或者如果你正在初始化它在一些早期的語句(作爲我的第一個片段),刪除初始化。
for循環的第一部分需要初始化語句。 i
不是一個聲明。如果您不想初始化任何東西,你可以離開的那部分空白,在Nikhil的答案:
for(; i < z; i++)
{
[...]
}
不要用外面定義的變量在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
{
[...]
}
}
i
本身並不是一個聲明,它是一個表達式。就像你可以 - 不要簡單地在你的代碼的某個地方寫i;
一樣。 for循環的初始化部分需要初始化;然而,如果(就像這裏的情況)循環已經被初始化(已經設置了i
),你可以像Nikhil所顯示的那樣忽略它。只需做for(;i<z;i++)
。
我認爲這是更好的答案是不是?
private void Function(int starts , int ends)
{
for(int i = starts; i < ends; i++)
{
[...]
}
}
或for(int i = starts; i
LadislavM
他的代碼和你的第二個代碼有什麼區別?都將從我開始 – aliboy38
@ aliboy38:兩者都將從我開始,但我正在初始化它for循環 –