有没有一种方法可以多次调用方法/代码行而不使用for / foreach / while循环?
例如,如果我用于循环:
int numberOfIterations = 6;
for(int i = 0; i < numberOfIterations; i++)
{
DoSomething();
SomeProperty = true;
}
我正在调用的代码行不使用'i',在我看来,整个循环声明隐藏了我正在尝试做的事情。对于foreach来说也是如此。
我想知道是否有一个我可以使用的循环语句看起来像:
do(6)
{
DoSomething();
SomeProperty = true;
}
很明显,我只想执行该代码6次,并且没有涉及索引实例化和向某个任意变量添加1的噪声。
作为一个学习练习,我写了一个静态类和方法:
Do.Multiple(int iterations, Action action)
哪个有效,但在自命不凡的规模上得分非常高,我相信我的同行不会赞同。
我可能只是挑剔而且for循环肯定是最容易识别的,但作为一个学习点我只是想知道是否有(更清洁)替代方案。感谢。
(我看过这个帖子,但它不是相当相同) Using IEnumerable without foreach loop
答案 0 :(得分:12)
实际上,for
循环并不会隐藏您要执行的操作
阅读代码的任何人都已熟悉标准for
循环,并会立即了解您正在做什么。
答案 1 :(得分:10)
通过将其作为一种扩展方法,您可以在预张力值上得分更高:
public static void Times(this int iterations, Action action)
{
for (int i = 0; i < iterations; i++)
{
action();
}
}
...
6.Times(() => {
DoSomething();
SomeProperty = true;
});
但我肯定会坚持使用for
循环。这是惯用的,公认的做法。
答案 2 :(得分:2)
看不到循环
private MethodDelegate MultiMethod(MethodDelegate m, int count) {
MethodDelegate a;
if (count > 0) {
a = m;
a += MultiMethod(m, --count);
} else {
a = delegate { };
}
return a;
}
并且您获得了一个很好的调用语法!
MultiMethod(action, 99)();
答案 3 :(得分:0)
怎么做...直到或如果......然后
在循环内部使用一个计数器并使其循环直到计数器达到6。
或带有计数器的if-then语句。如果你的值是6,那就突破循环。
我不是编程大师,但是如果你有一个需要完成一定次数的动作,那么在某个地方需要一个计数器,无论它是你的循环的功能还是它必须用计数器创建。