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

use*_*494 0 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);
Run Code Online (Sandbox Code Playgroud)

我正在寻找能够做到这一点的事情:

     Guys[X].Cash += Guys[X].MyGuess.PayOut(WinnerNumber);
Run Code Online (Sandbox Code Playgroud)

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

jas*_*son 8

你有几个选择:

普通老for循环:

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

foreach:

foreach(var guy in Guys) {
    guy.Cash += guy.MyGuess.PayOut(WinnerNumber);
}
Run Code Online (Sandbox Code Playgroud)

Array.ForEach:

Array.ForEach(Guys, g => g.Cash += g.MyGuess.PayOut(WinnerNumber));
Run Code Online (Sandbox Code Playgroud)

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

  • 值得注意的是,`foreach`和`Array.ForEach`只有在类型是`class`而不是`struct`时才会起作用.如果类型是`struct`,那么尝试使用`foreach`将导致编译时错误,这很好,但是`Array.ForEach`将在运行时静默失败而不更新任何内容. (2认同)