![](/img/trans.png)
[英]How can I access a variable set in Parallel ForEach outside the loop in 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.