返回复制和相乘的列表

Raz*_*zer 0 .net c#

我想返回给定列表的复制版本,其中每个元素都乘以标量.

...
int attenuation = 3;
return new List<double>(VoltsPerDivX1.Select(x => x*attenuation));
Run Code Online (Sandbox Code Playgroud)

VoltsPerDivX1是现有的类型列表List<double>.这是正确的方式还是更好的方式?

FMM*_*FMM 5

这略微更惯用:

return VoltsPerDivX1.Select(x => x * attenuation).ToList();
Run Code Online (Sandbox Code Playgroud)

如果您的Select(...)呼叫发出匿名类型,它也会表现良好.在您的示例中,您必须能够表达构造函数调用的列表类型.如果你做的事情如下:

return VoltsPerDivX1
    .Select(x => new { original = x, attenuated =  x * attenuation })
    .ToList();
Run Code Online (Sandbox Code Playgroud)

由于类型是匿名的,因此无法表达列表的参数类型.这可能是一个好习惯(如果你绝对需要强制评估一个IEnumerable,并确实要问这个问题).ToList().还有.ToArray().