for循环-如何在C#中实现for else和foreach else,类似于Python';是给别人的吗
本文关键字:else for Python 别人 类似于 foreach 循环 实现 | 更新日期: 2023-09-27 18:00:57
Python的用于和,而循环包括一个可选的else子句,如果循环正常退出(即没有break语句(,则执行该子句。例如,在Python中,您可以编写以下代码:
for x in range(3):
print(x)
else
print("The loop exited normally")
输出将是:
0
1
2
The loop exited normally
你将如何在C#中完成类似的事情来编码如下内容:
for (int i = 0; i < 3; i++)
{
Console.WriteLine(x);
}
else
Console.WriteLine("The loop exited normally");
foreach else的Python构造如下:
foreach( elem in collection )
{
if( condition(elem) )
break;
}
else
{
doSomething();
}
else仅在foreach循环期间未调用break时执行
C#的等价物可能是:
bool found = false;
foreach( elem in collection )
{
if( condition(elem) )
{
found = true;
break;
}
}
if( !found )
{
doSomething();
}
来源:Visual C#开发者中心
确定:
-
使用其他海报的花式建议之一
-
使用执行循环的方法,而不是
break
,可以return
来避免在循环下执行代码 -
使用可以在
break
之前设置的布尔变量,并在循环之后进行测试 -
使用
goto
而不是break
如果你问我的话,这是一个奇怪的模式。"Foreach"总是以开头,所以"else"这个词在那里没有意义。
如果您在Python中引用for-else和while-else构造,那么有一个基本的IEnumerable<T>
扩展方法可以模拟本文中描述的foreach-else,实现如下:
public static void ForEachElse<TSource>(
this IEnumerable<TSource> source,
Func<TSource, bool> action, Action @else)
{
foreach (var i in source)
{
if (!action(i))
{
return;
}
}
@else();
}
在谷歌上搜索它,我发现:http://www-jo.se/f.pfleger/.net-for-else
public static void ForEachElse<TSource>(
this IEnumerable<TSource> source,
Func<TSource>,
bool action,
Action @else
) // end of parameters
{
foreach (var i in source)
{
if (!action(i))
{
return;
}
}
@else();
}