当前上下文中不存在此变量

string[,] cusName = { { "John", "Smith" }, { "Will", "James"} , { "Bryan", "Doe" } };


for (int x = 0; x < cusName.GetLength(x); x++)

{

    for (int j = x + 1; j < cusName.GetLength(j); j++)

    {

        Console.Write("{0} ", cusName[x, j]);

    }

    Console.Write("{0} ", cusName[x, j]);

}

我的问题是最后一个Console.Write总是会产生错误。它表示该变量j在当前上下文中不存在。


红颜莎娜
浏览 192回答 3
3回答

慕仙森

正如其他人在评论中已经指出的那样,您无法j在声明它的循环之外访问。因此,您要么必须在循环j 之前声明,要么以不同于重用的方式访问最后一个索引j。话虽如此,目前还不清楚您想用代码做什么,而且您可能根本不想在Console.Write那里使用它。顺便说一句,您的代码有一个大问题:for (int x = 0; x < cusName.GetLength(x); x++)x只要它小于 ,这个 for 循环就会递增cusName.GetLength(x)。Array.GetLength用于获取多维数组中某个维度的元素数。由于您的数组有两个维度,因此您可以进行的唯一有效调用GetLength 是GetLength(0)针对第一个维度和GetLength(1)第二个维度。有一个变量,尤其是在循环中递增的变量,很可能会中断。我假设您最初想做这样的事情:for (int x = 0; x < cusName.GetLength(0); x++){&nbsp; &nbsp; for (int j = 0; j < cusName.GetLength(1); j++)&nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; &nbsp; Console.Write("{0} ", cusName[x, j]);&nbsp; &nbsp; }}如果你想在循环之后继续使用循环变量,你可以在之前声明它:int j;for (j = 0; j < cusName.GetLength(1); j++){&nbsp; &nbsp; …}Console.Write(j);请注意,在循环之后,j具有值,cusName.GetLength(1)因为这是循环的工作方式:在每次循环迭代后,变量将递增,如果条件 ( j < cusName.GetLength(1)) 为真,则将执行循环体。所以 for 循环总是以循环变量的另一个增量结束。这意味着如果您使用循环变量作为索引,那么该索引将在循环后超出数组的范围。所以如果你想重用变量,你应该记住这一点。通常,如果您不使用循环变量而是再次单独计算最后一个索引,则会更容易和更清晰:cusName[x, cusName.GetLength(1) - 1])
打开App,查看更多内容
随时随地看视频慕课网APP