我刚读过这个问题: Convert string[] to int[] in one line of code using LINQ
有一系列字符串:
var arr = new string[] { "1", "2", "3", "4" };
其中一个被接受的答案是:
int[] myInts = arr.Select(int.Parse).ToArray();
我自己尝试了并收到了cs04011编译器错误:
string str = "4 8 15 16 23 42";
int[] intArray = str.Split(' ').Select(int.Parse).ToArray();
此处的页面,描述了此编译器错误: MSDN
如果我这样做,它可以正常工作:
int[] intArray = str.Split(' ').Select(p=>int.Parse(p)).ToArray();
我想知道,为什么上一个问题所接受的asnwer工作正常并且我收到错误?
我的猜测是我的视觉工作室(2008年表达,目标框架= 3.5)并不好,但我没有找到任何证据。
提前致谢!
答案 0 :(得分:10)
简短的回答是:C#类型推断和对方法组转换的支持随着时间的推移而得到改善。您仍在使用C#3编译器(这是VS 2008中提供的编译器)。确切的细节是棘手的,我永远不会记得规范中确切的变化 - 类型推断是规范的一个比较繁琐的部分,并且它并没有完全正确描述预期的行为,无论如何,就我而言#39;我知道。
如果你使用更新的编译器遵循更新的语言规则,那就没问题了。此不取决于您要定位的框架版本 - 此处只有编译器/语言版本相关。
我强烈建议直接升级到Visual Studio 2015 - C#6有一些可爱的功能,可以从你的代码中删除残缺...