为什么这段代码不起作用?为什么循环想在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循环 –