Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# C中的Usage list.ForEach#_C#_List_Collections_Foreach_Lambda - Fatal编程技术网

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是的,这是一个很好的观点。但我不会把它混在一起。我只是想知道这些结构的行为,因为它们对我来说是新的。