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的第二个数字等等。
答案 0 :(得分:8)
您有几种选择:
for(int i = 0; i < Guys.Length; i++) {
Guys[i].Cash += Guys[i].MyGuess.PayOut(WinnerNumber);
}
foreach(var guy in Guys) {
guy.Cash += guy.MyGuess.PayOut(WinnerNumber);
}
Array.ForEach(Guys, g => g.Cash += g.MyGuess.PayOut(WinnerNumber));
对我来说,这些都是优先顺序。大多数人更喜欢for
循环,因为这是按顺序对数组中的每个项执行某些操作的常见方法。它虽然在for
和foreach
之间很接近。
答案 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));