c# - 是否有更清晰的语法来将操作应用于序列的每个元素?

标签 c# c#-3.0

int z = 1;
double result = Math.Log(z);            //works

但是尝试用数字数组做同样的事情是行不通的:

int[] z = new [] {1,2,3,4};
double[] result = Math.Log(z);            //Syntax 1 - error CS1503: Argument '1': cannot convert from 'int[]' to 'double'
double[] result = z.Select(p => Log(p)).ToArray();  //Syntax 2 - OK

如何使语法 #1 起作用?语法 #2 对我来说似乎很脏。

最佳答案

不,没有更干净的方法。 语法 2 使用 Select() 和 lambda 表达式将 Math.Log() 应用于每个元素是惯用的做法这在 C# 中。

关于c# - 是否有更清晰的语法来将操作应用于序列的每个元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/396521/

相关文章:

c# - 1秒后更改按钮的文本内容

c# - 从 var 转换为 dictionary<String,int>

c# - 需要帮助防止无限循环。属性设置

c# - 如何获取缺少的程序集中包含的类型名称

wcf - 当我在浏览器中输入 url 时,自托管 WCF 服务不起作用?

unit-testing - 如何对按钮被单击进行单元测试(在 C# 中)?

c# - 为什么在 TeamCity 中运行测试比直接在 NUnit 中运行测试花费的时间更长?

c# - 窗体不透明度..如何控制?

c#-3.0 - 如何在c#中的gecko webbrowser控件中隐藏滚动条

c# - 使用 wpf 应用程序读取条形码