C# C中的Usage list.ForEach#
让我们有:C# C中的Usage list.ForEach#,c#,list,collections,foreach,lambda,C#,List,Collections,Foreach,Lambda,让我们有: List<double> inputs,outputs; 这是: inputs.Clear(); outputs.ForEach(x => inputs.Add(x)); 1) 我假设这两个选项将首先清除输入列表,然后获取输出列表中的所有值,并将它们放入输入列表中 2) 这两个选项看起来是等效的。我说得对吗?他们之间有什么区别吗?没有,没有区别。它们很可能被编译成相同的IL代码 然而,在我看来,这种形式 inputs.Clear(); outputs.F
List<double> inputs,outputs;
这是:
inputs.Clear();
outputs.ForEach(x => inputs.Add(x));
1) 我假设这两个选项将首先清除输入列表,然后获取输出列表中的所有值,并将它们放入输入列表中2) 这两个选项看起来是等效的。我说得对吗?他们之间有什么区别吗?没有,没有区别。它们很可能被编译成相同的IL代码 然而,在我看来,这种形式
inputs.Clear();
outputs.ForEach(x => inputs.Add(x));
更清楚地表明你的意图。不过,我可能会完全避免这种情况,而只是使用
foreach
循环将每个元素添加到输入中。但这最终取决于你的个人喜好。不,没有区别。它们很可能被编译成相同的IL代码
然而,在我看来,这种形式
inputs.Clear();
outputs.ForEach(x => inputs.Add(x));
更清楚地表明你的意图。不过,我可能会完全避免这种情况,而只是使用foreach
循环将每个元素添加到输入中。但这最终取决于你的个人喜好。它们将被编译成相同的代码。您使用的第一种形式称为方法组。可能是等效的重复形式。但是我认为lambda比method组更具可读性。只要Add
没有多个重载,它们就相当。它们将被编译成相同的代码。您使用的第一种形式称为方法组。可能是等效的重复形式。但我认为lambda比method组更具可读性。只要Add
没有多个重载,它们是等价的。如果您在代码中使用多个ForEach,那么在可读性方面,一致使用其中一个会有所帮助。@RobertColumbia是的,这是一个很好的观点。但我不会把它混在一起。我只是想知道这些构造的行为,因为它们对我来说是新的。如果您在代码中使用多个ForEach,那么在可读性方面,一致使用其中一个会有所帮助。@RobertColumbia是的,这是一个很好的观点。但我不会把它混在一起。我只是想知道这些结构的行为,因为它们对我来说是新的。