繁体   English   中英

如何访问 foreach (C#) 之外的变量

[英]How do I access a variable outside of an foreach (C#)

我正在尝试从我的 main 方法中的 foreach 获取变量结果。 代码如下所示:

    static void Main(string[] args)
    {

        ArrayList lines = GetLines("test.txt", "8394", true);
        foreach (string s in lines)
        {
            string result = s;
        }
        Console.WriteLine(result);
    }

如您所见,它返回错误,因为我无法访问 foreach 之外的变量。 我如何访问它?

我不明白你想达到什么目的......但代码应该是这样的:

 ArrayList lines = GetLines("test.txt", "8394", true);
 string result=string.Empty;       
 foreach (string s in lines)
        {
            result = s;
        }
        Console.WriteLine(result);

我想你想做这样的事情:

 ArrayList lines = GetLines("test.txt", "8394", true);

 foreach (string s in lines)
        {
           Console.WriteLine(s);
        }

您的代码在逻辑上是错误的。 您循环遍历一些行,将它们分配给一个变量,然后对其不做任何事情,然后将下一行分配给一个新变量(每次循环获得另一行时,都会创建另一个名为 result 的变量),依此类推。

这可以被认为是一个逻辑代码:

string names = string.Empty;
foreach (string name in namesList)
{
    names += ", " + name;
}
console.WriteLine(names);

如果你想得到上面代码的当前值是可以的,但如果你想得到线你应该写

    static void Main(string[] args)
    {
        string result = string.Empty;
        ArrayList lines = GetLines("test.txt", "8394", true);
        foreach (string s in lines)
        {
            result += s;
        }
        Console.WriteLine(result);
    }

您需要在大括号 {} 之外声明一个变量才能在外面使用它

ArrayList lines = GetLines("test.txt", "8394", true);
 string result;       
 foreach (string s in lines)
        {
            result = s;
        }
        Console.WriteLine(result);

是显而易见的答案,但是此代码只会将行数组中的最后一个参数/项写入控制台。

这一切都取决于你真正想要什么,如果你想写出行数组的所有内容,你可以通过在循环中为每个项目写行。 例如

ArrayList lines = GetLines("test.txt", "8394", true);
 string result;       
 foreach (string s in lines)
        {
            result = s;
            Console.WriteLine(result);
        }

会写每一项

在 foreach 循环中声明的任何变量的 scope 仅限于循环本身。 它不能在循环外访问。 正如@danyolgiax 提到的,在循环外声明变量。 然后你就可以访问它了。

可以在scope中访问Variables 因此,如果您想访问foreach loop之外的变量,请在循环之外声明它。

string result = string.Empty;

foreach (string s in lines)         
{              
   result = s;         
} 

在 foreach 循环外声明字符串结果

string result = "" ;

foreach (string name in namesList)
{
    names += ", " + name;
}

....ETC

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM