Подтвердить что ты не робот

Как преобразовать String [] в int [] в С# и .NET 2.0?

У меня есть:

string[] strArray = new string[3] { "1", "2", "12" };

И я хочу что-то вроде этого

int[] intArray = Convert.toIntArray(strArray);

Я работаю int С#.net v2.0, я не хочу писать много кода.

Как я могу это сделать?

Спасибо.

4b9b3361

Ответ 1

Вы можете использовать метод Array.ConvertAll, который "преобразует массив одного типа в массив другого типа."

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

(EDIT: Type-inference отлично работает с этой методикой. В качестве альтернативы вы также можете использовать неявное преобразование группы методов, как в ответе Марка Гравелла, но вам придется явно указывать общие аргументы типа.)

Использование цикла for:

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

for (int i = 0; i < strArray.Length; i++)
   intArray[i] = int.Parse(strArray[i]);

Для полноты, идиоматический способ сделать это в С# 4.0 будет примерно таким:

var intArray = strArray.Select(int.Parse).ToArray();

или

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

Ответ 2

int[] intArray = Array.ConvertAll(strArray, int.Parse);

или в С# 2.0 (где вывод типового типа слабее):

int[] intArray = Array.ConvertAll<string,int>(strArray, int.Parse);

Ответ 3

using System.Collections.Generic;

int Convert(string s)
{
    return Int32.Parse(s);
}

int[] result = Array.ConvertAll(input, new Converter<string, int>(Convert));

или

int[] result = Array.ConvertAll(input, delegate(string s) { return Int32.Parse(s); })

Ответ 5

Когда вы уверены, все элементы определенно разборчивы, это сделает трюк:

string[] strArray = new string[3] { "1", "2", "12" };
int[] intArray = new int[strArray.Length];
for (int i = 0; i < strArray.Length; i++)
{
    intArray[i] = int.Parse(strArray[i]);
}

Ответ 6

Что-то вроде этого, но вы хотите немного проверить ошибку (мой, если на самом деле хромой, как пример):

static private int[] toIntArray(string[] strArray)
{
    int[] intArray = new int[strArray.Length];
    for (int index = 0; index < strArray.Length; index++)
    {
            intArray[index] = Int32.Parse(strArray[index]);
    }
    return intArray;
}

И используйте его следующим образом:

string[] strArray = new string[3] { "1", "2", "12" };
int[] interi = toIntArray(strArray);