C# 如何在.ForEach()方法中使用continue语句
在ForEach方法中是否有与continue语句等价的语句C# 如何在.ForEach()方法中使用continue语句,c#,.net,linq,lambda,anonymous-methods,C#,.net,Linq,Lambda,Anonymous Methods,在ForEach方法中是否有与continue语句等价的语句 List<string> lst = GetIdList(); lst.ForEach(id => { try { var article = GetArticle(id); if (article.author.contains("Twain")) { //want to jump out of the foreach now
List<string> lst = GetIdList();
lst.ForEach(id =>
{
try
{
var article = GetArticle(id);
if (article.author.contains("Twain"))
{
//want to jump out of the foreach now
//continue; **************this is what i want to do*******
}
//other code follows
}
List lst=GetIdList();
lst.ForEach(id=>
{
尝试
{
var article=GetArticle(id);
if(article.author.contains(“Twain”))
{
//想现在就跳出来吗
//继续;****************这就是我想做的*******
}
//其他代码如下
}
编辑:
感谢所有伟大的答案。感谢您的澄清。foreach不是一个扩展方法。我使用这种结构来保持编码风格的一致性(不同的程序员在同一个类中使用另一个类似的方法)…感谢您提供了避免使用.foreach的原因的链接。如果出现以下情况,只需反转您的
:
lst.ForEach(id => {
var article = GetArticle(id);
if (!article.author.contains("Twain"))
{
// other code here
}
});
A) ForEach不是LINQ,它是列表上的一个方法
B) 使用foreach即可。
C) return
就可以了
编辑
只是想澄清一下,您所做的是提供一个将为列表中的每个条目调用的方法。return
将仅应用于该成员的方法。列表中的其他成员仍将调用该方法。就我个人而言,我只会使用标准的foreach循环,而不是list.foreach
在这种情况下,可以反转条件(以避免出现这种情况下的代码)或者调用<代码>返回< /代码>,因为您的目标是使用<代码>继续<代码>语句。但是,如果您想“代码>中断<代码>,这将不起作用。如果这是您想要的,return应该可以。如果您想要完全退出,您可能需要使用实际的LINQ方法(如Any())重写它。您使用的方法是在类上定义的方法,而不是LINQ扩展方法。这个问题实际上与LINQ无关
return;
在传递给列表的代理中。ForEach
应在实际的ForEach
构造中使用continue;
近似值。回答您的问题:
List<string> lst = GetIdList();
lst.ForEach(id =>
{
try
{
var article = GetArticle(id);
if (article.author.contains("Twain"))
goto _continue;
}
//other code follows
_continue:;
}
List lst=GetIdList();
lst.ForEach(id=>
{
尝试
{
var article=GetArticle(id);
if(article.author.contains(“Twain”))
继续;
}
//其他代码如下
_继续:;
}
其他答案是正确的,请避免.ForEach()
goto
也应该避免,尽管它有时对缩短代码块很有用。如果你想使用foreach这样糟糕的工具,请使用常规foreach而不是过度强调,请使用标准foreach循环。重新检查术语“continue”。在循环中,“continue”意味着“停止处理此项并转到下一项”。完全退出处理的关键字为“break”+1,因为它与所选答案相同,但比所选答案早1分钟。