请使用line => line和.toArray解释这部分C#代码中发生了什么

pha*_*han 2 c# visual-studio-2010 winforms

这是代码:

File.ReadLines(sourceFilePath).Select(line => line.Split('\t')).ToArray();
Run Code Online (Sandbox Code Playgroud)

在"选择"关键字之前,我得到了正在发生的事情.有人可以打破"line => line.Split ...中发生的事情吗?

我的理解是,我们逐行浏览文本文件,并通过制表符解析和分割一行输入文本(因为我知道文本是制表符分隔的).但是,"line => line ..."究竟发生了什么?

我得到了文本进入数组的代码行的末尾.但是当我调试并逐步执行代码并使用locals窗口时,包含已读取内容的Array的名称是什么?如何查看读入数组的内容?

Chr*_*ain 5

实际上,这就是说,"对于文件中的每一行,将制表符上的行拆分为一个字符串数组,然后创建这些数组的数组(这样返回的数组中的每个元素都是一个数组)"

Select函数采用Enumerable of something并将函数应用于每个项目,为每个输入值生成1个输出值.在其他编程语言中,这称为地图或投影.

=>表示一个lambda表达式,它被编译成一个委托函数.它接受一个名为"line"的参数,其类型由用法推断(因为ReadLines返回一个IEnumerable of Strings,line类型为String).

lambda的主体具有隐含的返回类型,该类型是由上次调用(调用Split)产生的值.因此,该行说"在每一行上运行这个lambda".

最后,最后的调用.ToArray(在lambda之外)将IEnumerable<String[]>返回的for转换Select为array(String[][])数组.