(C#)按顺序操作多个Array项目的快速方法?

时间:2009-12-29 01:31:04

标签: c# arrays

C#newbie正在处理一些教程。有没有办法在数组中的每个对象上运行相同的命令?

这是我当前(工作)的代码:

     Guys[0].Cash += Guys[0].MyGuess.PayOut(WinnerNumber);
     Guys[1].Cash += Guys[1].MyGuess.PayOut(WinnerNumber);
     Guys[2].Cash += Guys[2].MyGuess.PayOut(WinnerNumber);

我正在寻找可以做到这一点的事情:

     Guys[X].Cash += Guys[X].MyGuess.PayOut(WinnerNumber);

X =是第一个runthrough的第一个数字,然后是第二个runthrough的第二个数字等等。

3 个答案:

答案 0 :(得分:8)

您有几种选择:

Plain old for loop

for(int i = 0; i < Guys.Length; i++) {
    Guys[i].Cash += Guys[i].MyGuess.PayOut(WinnerNumber);
}

foreach block

foreach(var guy in Guys) {
    guy.Cash += guy.MyGuess.PayOut(WinnerNumber);
}

Array.ForEach

Array.ForEach(Guys, g => g.Cash += g.MyGuess.PayOut(WinnerNumber));

对我来说,这些都是优先顺序。大多数人更喜欢for循环,因为这是按顺序对数组中的每个项执行某些操作的常见方法。它虽然在forforeach之间很接近。

答案 1 :(得分:1)

您可以使用for循环执行此操作:

for (int i = 0; i < Guys.Length; i++)
{
    Guys[i].Cash += Guys[i].MyGuess.PayOut(WinnderNumber);
}

答案 2 :(得分:1)

它是一个没有广泛记录的习惯用法,你可以用foreach命令实际做到这一点,只要这是一个object []构造:

foreach(GuyObject guy in Guys) {
   guy.Cash += guy.MyGuess.Payout(WinnerNumber);
}

猜猜我也应该添加LAMBDA版本:

Array.ForEach(guys, guy => guy.Cash += guy.MyGuess.Payout(WinnerNumber));