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

时间:2011-07-06 12:03:54

标签: c# foreach

我正在尝试从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之外的变量。 我该如何访问它?

7 个答案:

答案 0 :(得分:5)

我无法理解你想要达到的目标......但代码应该是这样的:

 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);
        }

答案 1 :(得分:1)

您的代码在逻辑上是错误的。循环遍历某些行,将它们分配给变量,然后对它执行 nothing ,然后将下一行分配给新变量(每次循环得到另一行时,创建另一个名为result的变量)等等。

这可以被视为逻辑代码:

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

答案 2 :(得分:0)

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

    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);
    }

答案 3 :(得分:0)

你需要在大括号{}之外声明一个变量,以便在

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

明显的答案是,然而此代码只会向控制台写出行数组中的最后一个参数/项。

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

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

会写每个项目

答案 4 :(得分:0)

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

答案 5 :(得分:0)

可以在Variables中访问

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

string result = string.Empty;

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

答案 6 :(得分:0)

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

string result = "" ;

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

....等