Imagine que precisamos transforar uma string "1,2,3" em um array de int. Normalmente utilizamos o Split e transformamos em um array de string, como no exemplo abaixo. Mas este exemplo retornaria um erro. Cannot implicitly convert type 'string' to 'int'.
string numeros = "1,2,3";
string[] arr = numeros.Split(',');
//Erro: Cannot implicitly convert type 'string' to 'int'
int primeiroNumero = arr[0];
Então vamos transformar nosso string[] em int[] utilizando o ConvertAll da classe System.Array. Veja o Exemplo.
string numeros = "1,2,3";
//Converter Split de String para int[]
int[] arr = Array.ConvertAll<string, int>(numeros.Split(','), int.Parse);
int primeiroNumero = arr[0];
Outra dica é utilizar o StringSplitOptions.RemoveEmptyEntries ao fazer o Split para remover entradas vazias.
string[] arr = "1,2,,3,".Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
Resultado:
String para int[] com StringSplitOptions.RemoveEmptyEntries
string numeros = "1,2,,3,";
int[] arr = Array.ConvertAll<string, int>(numeros.Split(new char[] {','}, StringSplitOptions.RemoveEmptyEntries), int.Parse);
int primeiroNumero = arr[0];
Resultado:
Caso não utilize o StringSplitOptions.RemoveEmptyEntries, pode gerar o seguinte erro:
An exception of type 'System.FormatException' occurred in mscorlib.dll but was not handled in user code
Input string was not in a correct format