C# System.Array不包含ToArray的定义

C# System.Array不包含ToArray的定义,c#,asp.net,C#,Asp.net,如何在.Split()之后获取此int[]数组 string s=“1,2,3,4”; int[]a=s.Split(',').ToArray(); Split不会神奇地给你int值,它会返回一个字符串数组。所以你必须转换 s.Split(',').Select(x => Convert.ToInt32(x)).ToArray(); 我会按照Raphaël说的做,但是如果你不熟悉lambda表达式(x=>…部分),你可以用这个来代替。两者都会给你一个int的数组,Raphaëls的例子更

如何在
.Split()
之后获取此
int[]
数组

string s=“1,2,3,4”;
int[]a=s.Split(',').ToArray();

Split不会神奇地给你int值,它会返回一个字符串数组。所以你必须转换

s.Split(',').Select(x => Convert.ToInt32(x)).ToArray();

我会按照Raphaël说的做,但是如果你不熟悉lambda表达式(x=>…部分),你可以用这个来代替。两者都会给你一个int的数组,Raphaëls的例子更可取,但当你不知道Lambda表达式是如何工作的时候,它可能会让人害怕:P(基本上它的意思是“对于每个字符串x,都要转换.ToInt32(x)”


无法从
string[]
转换到
int[]
这就是我用
所做的。ToArray()
不会
。选择(convert.ToInt32)
也可以吗?@BenjaminGruenbaum在这种情况下不可以,我想(可能是因为它们是convert.ToInt32的多个重载?)@RaphaëlAlthaus哦,对了,推理会失败。执行
.Select(int.Parse)
应该可以很好地工作,而且应该更短。@ZeeTee不,这不是做任何转换,它只是一个扩展方法,泛型类型必须相同。@RaphaëlAlthaus它肯定会编译,为什么不呢?它只是一个方法组。不需要在函数包装器中包装东西。@L.B是的,必须刷新我的方法组定义 ;)
s.Split(',').Select(x => Convert.ToInt32(x)).ToArray();
int[] a = s.Split(',').Select(int.Parse).ToArray();