通常,我们使用计数器执行类似for或while循环的操作:
for (int i = 0; i < 10; i++)
{
list.Add(GetRandomItem());
}
但有时你会混淆界限.你可以使用while循环,但是如果你犯了一个错误,这个循环是无限的...
例如,在Perl中,我会使用更明显的
for(1..10){
list->add(getRandomItem());
}
有大约doitXtimes(10){...}
个吗?
通常,我们使用计数器执行类似for或while循环的操作:
for (int i = 0; i < 10; i++)
{
list.Add(GetRandomItem());
}
但有时你会混淆界限.你可以使用while循环,但是如果你犯了一个错误,这个循环是无限的...
例如,在Perl中,我会使用更明显的
for(1..10){
list->add(getRandomItem());
}
有大约doitXtimes(10){...}
个吗?
您可以轻松编写自己的扩展方法:
public static void Times(this int count, Action action)
{
for (int i = 0; i < count; i++)
{
action();
}
}
然后您可以写道:
10.Times(() => list.Add(GetRandomItem()));
我不确定我是否真的会建议你do,但这是一个 Select .我不相信框架中有类似的东西,尽管您可以使用Enumerable.Range
或Enumerable.Repeat
来创建适当长度的惰性序列,这在某些情况下可能很有用.
从C#6开始,您仍然可以方便地访问静态方法,而无需创建扩展方法,使用using static
指令导入它.例如:
// Normally in a namespace, of course.
public class LoopUtilities
{
public static void Repeat(int count, Action action)
{
for (int i = 0; i < count; i++)
{
action();
}
}
}
然后,当你想使用它时:
using static LoopUtilities;
// Class declaration etc, then:
Repeat(5, () => Console.WriteLine("Hello."));