FOR循环初始化中有多个语句

时间:2018-06-21 01:58:07

标签: c#

我需要在for循环的开始时声明i并重新初始化j。但是,

int j;
for (int i = 0, j = 0; true;) { // Do sth }

说:无法在此范围内声明名为'j'的本地或参数,因为该名称在封闭的本地范围内用于定义本地参数。

int j;
for (j = 0, int i = 0; true;) { // Do sth }

说:无效的表达方式'int'

有办法吗?任何知识都会受到赞赏。

注释1 :我知道将j = 0放在statemnt的前面,这不是我想要的。

注释2 :以下所有作品。

int i, j;
for (i = 0, j = 0; true;) { // Do sth }

for (int i = 0, int j = 0; true;) { // Do sth }

int i;
for (Foo(), i = 0; true;) { // Do sth }

3 个答案:

答案 0 :(得分:4)

您的问题是,此行(如果在for循环之外使用):int i = 0, j = 0;int i = 0; int j = 0完全相同。但是,您仍然可以做到这一点:

int j;
for (int i = j = 0; true;) { // Do sth }

答案 1 :(得分:2)

您需要做的就是

//int j;
for (int i = 0, j = 0; true;) { // Do sth }

当你做这样的事情

int i = 0, j = 0;

您要说的是创建一个int iint j的新变量,显然您试图在同一范围内两次声明同一变量

或者您也可以

int i;
int j;
for (i = 0, j = 0; true;) { // Do sth }

更新

  

在循环之前,首先需要创建和使用j。在   替代版本i的范围不仅限于循环。一世   感谢可能的解决方法,但这不是我问的

没有解决方法,这是一个范围问题,如果您在其他范围中使用变量,则需要适当地确定变量的范围或相应地更改其名称。简单修复,如果在for之前声明i,请不要在同一范围内使用i。即更改i的名称,进一步向下

答案 2 :(得分:1)

我认为这解决了范围界定问题。

int j;
{
    int i;
    for (i = 0, j = 0; true;)
    {
        // Do sth
    }
}