【问题标题】:Can somebody help me by explaining this有人可以帮我解释一下吗
【发布时间】:2019-11-03 11:50:47
【问题描述】:
int[] a = Array.ConvertAll(Console.ReadLine().Split(' '), aTemp => Convert.ToInt32(aTemp));

由于这不是放置元素的传统方法,有人可以解释一下吗?

【问题讨论】:

标签: c# arrays lambda


【解决方案1】:

这段代码从控制台读取一行,天真地期望用户插入一堆用空格分隔的整数,并用这些整数填充一个int数组。

Console.ReadLine() 从用户那里读取一行文本。
Split(' ') 按空格分割字符串,生成字符串数组。
ConvertAll 接受一种类型的数组,然后返回另一种类型的数组,使用它作为参数接收的转换方法。
aTemp => Convert.ToInt32(aTemp) 是该转换方法,作为lambda expression.

我写它是“天真地期望用户......”因为你永远不应该相信用户的输入。如果用户输入诸如1 gr 4 6 之类的值,此代码将因异常而中断。

【讨论】:

  • 为什么我们必须使用 => ?它是必须的,还是像我们可以使用的任何其他“角色”一样?
  • 您不必这样做。在这种情况下,它可以写成Convert.ToInt32转换器是一个委托,如果你有一个签名匹配委托的方法,你不必使用lambda表达式将它传递给委托。
猜你喜欢
  • 2011-12-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-08
  • 2011-11-22
  • 2016-12-12
  • 2014-04-20
  • 2011-04-24
相关资源
最近更新 更多