如何在C#和.NET 2.0中将String []转换为int []?

Chr*_*ove 22 c# .net-2.0

我有 :

string[] strArray = new string[3] { "1", "2", "12" };
Run Code Online (Sandbox Code Playgroud)

我想要这样的东西

int[] intArray = Convert.toIntArray(strArray);
Run Code Online (Sandbox Code Playgroud)

我在C#.net v2.0上工作,我不想写很多代码.

我怎样才能做到这一点?

谢谢.

Ani*_*Ani 41

您可以将此Array.ConvertAll方法用于此目的,即"将一种类型的数组转换为另一种类型的数组".

int[] intArray = Array.ConvertAll(strArray,
                                  delegate(string s) { return int.Parse(s); });
Run Code Online (Sandbox Code Playgroud)

(编辑:类型推理在这种技术中运行良好.或者,您也可以使用隐式方法组转换,如Marc Gravell的答案,但您必须明确指定泛型类型参数.)

使用for循环:

int[] intArray = new int[strArray.Length];

for (int i = 0; i < strArray.Length; i++)
   intArray[i] = int.Parse(strArray[i]);
Run Code Online (Sandbox Code Playgroud)

为了完整起见,在C#4.0中执行此操作的惯用方法如下:

var intArray = strArray.Select(int.Parse).ToArray();
Run Code Online (Sandbox Code Playgroud)

要么:

//EDIT: Probably faster since a fixed-size buffer is used
var intArray = Array.ConvertAll(strArray, int.Parse);
Run Code Online (Sandbox Code Playgroud)


Mar*_*ell 16

int[] intArray = Array.ConvertAll(strArray, int.Parse);
Run Code Online (Sandbox Code Playgroud)

或者在C#2.0中(通用类型推断较弱):

int[] intArray = Array.ConvertAll<string,int>(strArray, int.Parse);
Run Code Online (Sandbox Code Playgroud)