У меня есть:
string[] strArray = new string[3] { "1", "2", "12" };
И я хочу что-то вроде этого
int[] intArray = Convert.toIntArray(strArray);
Я работаю int С#.net v2.0, я не хочу писать много кода.
Как я могу это сделать?
Спасибо.
У меня есть:
string[] strArray = new string[3] { "1", "2", "12" };
И я хочу что-то вроде этого
int[] intArray = Convert.toIntArray(strArray);
Я работаю int С#.net v2.0, я не хочу писать много кода.
Как я могу это сделать?
Спасибо.
Вы можете использовать метод 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);
int[] intArray = Array.ConvertAll(strArray, int.Parse);
или в С# 2.0 (где вывод типового типа слабее):
int[] intArray = Array.ConvertAll<string,int>(strArray, int.Parse);
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); })
Array.ConvertAll Generic Method
Преобразует массив одного типа в массив другого типа.
Когда вы уверены, все элементы определенно разборчивы, это сделает трюк:
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]);
}
Что-то вроде этого, но вы хотите немного проверить ошибку (мой, если на самом деле хромой, как пример):
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);