gpt4 book ai didi

c# - 是否有更短/更简单的 for 循环版本 x 次?

转载 作者:IT王子 更新时间:2023-10-29 03:50:13 25 4
gpt4 key购买 nike

通常我们会用一个计数器做类似 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()));

我不确定我是否真的建议您这样做,但这是一个选择。我不相信框架中有类似的东西,尽管您可以使用 Enumerable.RangeEnumerable.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."));

关于c# - 是否有更短/更简单的 for 循环版本 x 次?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3932413/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com