例如,如果我必须多次输入类似的内容,有没有办法将此循环放在方法中,使用LoopMethod(Code lines, int count)
等参数
for (int i = 0; i <= 1000; i++)
{
code line 1;
code line 2;
...
code line N;
}
for (int i = 0; i <= 1000; i++)
{
code line 1;
code line 2;
...
code line N;
}
如果结果有类似的东西。
LoopMethod{
code line 1,
code line 2,
...
code line N,
1000
}
答案 0 :(得分:3)
这是一个变体:
public static LoopMethod(int iterations, Action<int> body)
{
for (int i = 0; i < iterations; i++)
body(i);
}
你会这样称呼它:
LoopMethod(100, i =>
{
code line;
code line;
});
答案 1 :(得分:2)
更通用的形式是首先创建一个扩展方法:
public static class Extension
{
public static void ForEach<T>(this IEnumerable<T> enumerable, Action<T> action)
{
foreach(var currentItem in enumerable)
{
action(currentItem);
}
}
}
然后使用它可以执行以下操作:
Enumerable.Range(0, 1000).ForEach(i =>
{
Console.WriteLine(i);
});
哪个会从0迭代到999(使用1001作为包含的第二个参数)。额外的好处是,这适用于任何可枚举的类型。
答案 2 :(得分:0)
嗯,你可以很容易地与代表们这样做:
public static void LoopMethod(Action loopCode, int count)
{
for (int i = 0; i < count ; ++i) loopCode();
}
public static void Main()
{
LoopMethod(() => {
code line 1;
code line 2;
code line 3;
}, 100);
}
你可以改变你想要的任何方式,甚至可以改为Action<int>
,它将当前循环计数器作为参数。请参阅@ Gabe对Action<int>
变体的回答:)
当然,我不得不想知道你为什么要重现像循环那样明显的内置结构?
答案 3 :(得分:0)
您可以像这样使用lambda表达式:
LoopMethod(() => {code line 1; code line 2;}, 100);
方法声明看起来像
void LoopMethod (Action code, int count) {
for (int i = 0; i < count; i++) {
code();
}
}
那里可能存在奇怪的语法错误(我没有测试过),但这种方法应该有效。