每当我需要在算法中使用 C# 执行某个操作 N 次时,我都会编写以下代码:
Every time I need to do something N times inside an algorithm using C# I write this code
for (int i = 0; i < N; i++)
{
...
}
学习 Ruby 后,我了解到该语言中有一个 times() 方法,可以像这样使用相同的语义:
N.times do
...
end
C#中的代码片段看起来更加复杂,我们需要声明无用的变量i。
我试图编写一个扩展方法来返回IEnumerable,但是我对结果不满意,因为我又不得不声明一个循环变量i。
public static class IntExtender
{
public static IEnumerable Times(this int times)
{
for (int i = 0; i < times; i++)
yield return true;
}
}
...
foreach (var i in 5.Times())
{
...
}
使用一些新的C# 3.0语言特性,是否可以使N次循环更加优雅?