简体   繁体   English

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

[英](C#) Quick way to operate on multiple Array items in sequence?

C# newbie working off some tutorials. C#新手编写了一些教程。 Is there a way to run an identical command on every object in an array? 有没有一种方法可以在数组中的每个对象上运行相同的命令?

Here is my current (working) code: 这是我当前的(工作)代码:

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

I'm looking for something that will do this: 我正在寻找可以做到这一点的东西:

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

X = is first number on first runthrough, then 2nd number on 2nd runthrough, etc. X =是第一个穿线的第一个数字,然后是第二个穿线的第二个数字,依此类推。

You have several options: 您有几种选择:

Plain old for loop : 普通的for循环

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

foreach block : foreach

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

Array.ForEach : Array.ForEach

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

These, for me, are in order of preference. 对我而言,这些是按优先顺序排列的。 Most will prefer the for loop because that is the familiar way of doing something to every item in array in sequence. 大多数人会喜欢for循环,因为这是按顺序对数组中每个项目执行操作的熟悉方式。 It's close though between for and foreach . 虽然在forforeach之间很接近。

You can do it with a for loop: 您可以使用for循环来实现:

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

Its a not-widely documented idiom that you can actually do this with the foreach command, as long as this is a object[] construct: 它是一个没有广泛记录的惯用法,只要它是一个object []构造,就可以使用foreach命令实际执行此操作:

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

Guess I should add LAMBDA version as well: 猜猜我也应该添加LAMBDA版本:

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM