[英]declare variable outside of the foreach loop
在 for 循环情况下,我可以在 for 语句之外声明索引。 例如,而不是
for (int i = 0; i < 8; i++) { }
我可以:
int i;
for (i = 0; i < 8; i++) { }
现在与 foreach 循环相比,我必须在循环内声明变量:
foreach (string name in names) { }
我不能做这样的事情:
string name;
foreach (name in names) { }
这让我感到困扰的原因是在循环之后我想再次使用变量“name”。 在foreach循环的情况下,不能使用变量“name”,因为它在foreach scope之外,并且我不能声明另一个具有相同名称的变量,因为它之前在同一个scope中声明。
任何想法?
好吧,你可以这样做:
string name = null; // You need to set a value in case the collection is empty
foreach (string loopName in names)
{
name = loopName;
// other stuff
}
或者更有可能:
string name = null; // You need to set a value in case the collection is empty
foreach (string loopName in names)
{
if (someCondition.IsTrueFor(loopName)
{
name = loopName;
break;
}
}
如果 foreach 循环的内容只是为了找到一个匹配元素 - 至少听起来很可能 - 那么您应该考虑 LINQ 是否会是一个更好的匹配:
string name = names.Where(x => x.StartsWith("Fred"))
.FirstOrDefault();
使用 LINQ 通常可以使代码基本上试图找到更易于阅读的内容。
您不能在 foreach 循环中执行此操作。 您正在创建和使用一个范围变量,其 scope 仅限于 foreach 查询。
如果您需要使用 names 集合中的单个名称,则可以将其分配给 foreach 循环之外的值:
foreach(string name in names)
{
if(name == someCondition)
someVariable = name;
}
也许?
string name;
foreach (var tmp in names) { name = tmp; }
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.