【发布时间】:2019-11-03 11:50:47
【问题描述】:
int[] a = Array.ConvertAll(Console.ReadLine().Split(' '), aTemp => Convert.ToInt32(aTemp));
由于这不是放置元素的传统方法,有人可以解释一下吗?
【问题讨论】:
int[] a = Array.ConvertAll(Console.ReadLine().Split(' '), aTemp => Convert.ToInt32(aTemp));
由于这不是放置元素的传统方法,有人可以解释一下吗?
【问题讨论】:
这段代码从控制台读取一行,天真地期望用户插入一堆用空格分隔的整数,并用这些整数填充一个int数组。
Console.ReadLine() 从用户那里读取一行文本。Split(' ') 按空格分割字符串,生成字符串数组。ConvertAll 接受一种类型的数组,然后返回另一种类型的数组,使用它作为参数接收的转换方法。aTemp => Convert.ToInt32(aTemp) 是该转换方法,作为lambda expression.
我写它是“天真地期望用户......”因为你永远不应该相信用户的输入。如果用户输入诸如1 gr 4 6 之类的值,此代码将因异常而中断。
【讨论】:
Convert.ToInt32转换器是一个委托,如果你有一个签名匹配委托的方法,你不必使用lambda表达式将它传递给委托。