Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/339.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
“令人困惑”;for loop";在c#中,退出时,值被清除_C# - Fatal编程技术网

“令人困惑”;for loop";在c#中,退出时,值被清除

“令人困惑”;for loop";在c#中,退出时,值被清除,c#,C#,我刚刚接触c#,请帮助我理解c#中的循环 问题:我试图在代码中进一步使用j,但在退出for循环后,它显示j在当前内容中不存在 这在C#中是正确的行为吗?如何在循环外使用j for (int i = 0; i < 4; i++) { int j; j = 10; //print j within the loop, which works fine System.Windows.Forms.MessageBox.Sho

我刚刚接触c#,请帮助我理解c#中的循环

问题:我试图在代码中进一步使用
j
,但在退出for循环后,它显示
j
在当前内容中不存在

这在C#中是正确的行为吗?如何在循环外使用
j

for (int i = 0; i < 4; i++)
{
    int j; 
    j = 10;                        
   //print j within the loop, which works fine
 System.Windows.Forms.MessageBox.Show(j.ToString());
}
//print j outside the loop, which throws error
System.Windows.Forms.MessageBox.Show(j.ToString());
for(int i=0;i<4;i++)
{
int j;
j=10;
//在循环中打印j,效果很好
System.Windows.Forms.MessageBox.Show(j.ToString());
}
//在循环外打印j,这会引发错误
System.Windows.Forms.MessageBox.Show(j.ToString());

你不能。它超出了您定义的范围

想象一下,我是你的替罪羊,你给了我做这件事的工作。。我认为J=10,并记下几次。。然后我告诉你是我干的

然后你试着用我想到的东西

你需要调整代码

        int j=0;
       for (int i = 0; i < 4; i++)
        {
            j = 10;                        
           'print j within the loop, which works fine
         System.Windows.Forms.MessageBox.Show(j.ToString());
        }
        System.Windows.Forms.MessageBox.Show(j.ToString());
intj=0;
对于(int i=0;i<4;i++)
{
j=10;
'在循环中打印j,效果很好
System.Windows.Forms.MessageBox.Show(j.ToString());
}
System.Windows.Forms.MessageBox.Show(j.ToString());

现在j存在,在循环中,因为它已经生成了。。所以我来找一个叫做“j”的帖子,我可以在上面写10个。你在我完成后回来,帖子仍然在那里。

你需要更好地了解C#中的变量作用域-如果你用谷歌搜索它,周围有很多文档

至于您的代码,如果您想在for循环之外访问变量,您需要在for循环之外声明它,例如

int j = 0; 
for (int i = 0; i < 4; i++)
{
     j = 10;                        
     System.Windows.Forms.MessageBox.Show(j.ToString());
}
System.Windows.Forms.MessageBox.Show(j.ToString());
intj=0;
对于(int i=0;i<4;i++)
{
j=10;
System.Windows.Forms.MessageBox.Show(j.ToString());
}
System.Windows.Forms.MessageBox.Show(j.ToString());

在代码中,您在循环中声明了变量j,这就是您无法访问该变量的原因

因此,在for循环之外声明变量

如下图所示

 int j=0;   // Declare here

 for (int i = 0; i < 4; i++)
 {

    j = 10;                        
    'print j within the loop, which works fine
     System.Windows.Forms.MessageBox.Show(j.ToString());
  }
 'print j outside the loop, which throws error
  System.Windows.Forms.MessageBox.Show(j.ToString());
int j=0;//在此申报
对于(int i=0;i<4;i++)
{
j=10;
'在循环中打印j,效果很好
System.Windows.Forms.MessageBox.Show(j.ToString());
}
'在循环外打印j,这会引发错误
System.Windows.Forms.MessageBox.Show(j.ToString());
这不是C的工作方式

变量
j
在循环范围内定义。这意味着它无法从循环外部访问

请参阅文档

如果希望能够从循环外部访问变量,则还必须从循环外部声明它

int j;
for (int i = 0; i < 4; i++)
{
    j = 10;
}     
intj;
对于(int i=0;i<4;i++)
{
j=10;
}     

不是“C”工作,而是一般编程。在每种编程语言中,都有作用域的概念。谢谢大家,很抱歉在这方面遇到麻烦,但在开始时在循环外声明j之后,现在我了解了编译错误。。“使用未分配的局部变量'j'”int j下面的错误;对于(int i=0;i<4;i++){j=10;System.Windows.Forms.MessageBox.Show(j.ToString();}System.Windows.Forms.MessageBox.Show(j.ToString());为此,您将变量赋值为0,比如int j=0;谢谢,在赋值(int j=0)后为我工作。。正如我现在理解的概念,int很好,但是在List的情况下,在声明过程中应该分配值吗?如何做到这一点?(例如:List-ggstring;这是我的代码,我需要在循环外使用List-ggstring:List-ggstring;for(int-ggindex=0;ggindex<2;ggindex++){gg=cc[ggindex];ggstring=cc[ggindex].Split(“~”).ToList(); };