This article has been localized into Portuguese by the community.
Arrays
Arrays funciona como coleções de itens, por exemplo, strings. Você pode usá-los para reunir itens em um único grupo e realizar várias operações neles, por exemplo, ordenação. Além disso, vários métodos dentro do framework funcionam em arrays, para possibilitar a aceitação de um conjunto de itens em vez de apenas um. Este fato, por si só, torna importante conhecer um pouco sobre matrizes.
Matrizes são declaradas como variáveis, com um conjunto de colchetes [] após o tipo de dados, assim:
string[] names;
Você precisa instanciar o array para usá-lo, o que é feito assim:
string[] names = new string[2];
O número (2) é o tamanho da matriz, ou seja, a quantidade de itens que podemos colocar nela. Colocar itens no array também é bem simples:
names[0] = "John Doe";
Mas por que 0? Como é com tantas coisas no mundo da programação, a contagem começa em 0 em vez de 1. Então o primeiro item é indexado como 0, o próximo como 1 e assim por diante. Você deve se lembrar disso ao preencher a matriz com itens, porque o excesso causará uma exceção. Quando você olha para o inicializador, configurando a matriz para um tamanho de 2, pode parecer natural colocar o número de item 0, 1 e 2 nele, mas esse é um item demais. Se você fizer isso, uma exceção será lançada. Discutiremos exceções em um capítulo posterior.
Anteriormente, aprendemos sobre loops e, obviamente, eles são ótimos com matrizes. A maneira mais comum de obter dados de um array é fazer um loop e executar algum tipo de operação com cada valor. Vamos usar o array de antes, para criar um exemplo real:
using System;
using System.Collections;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
string[] names = new string[2];
names[0] = "John Doe";
names[1] = "Jane Doe";
foreach(string s in names)
Console.WriteLine(s);
Console.ReadLine();
}
}
}
Usamos o loop foreach, porque é o mais fácil, mas é claro que poderíamos ter usado um dos outros tipos de loop. O loop for também é bom com arrays, por exemplo, se você precisar contar cada item, desta forma:
for(int i = 0; i < names.Length; i++)
Console.WriteLine("Item number " + i + ": " + names[i]);
Na verdade é muito simples. Usamos a propriedade Length da matriz para decidir quantas vezes o loop deve iterar e, em seguida, usamos o contador (i) para gerar a saída onde estamos no processo, bem como obter o item da matriz. Assim como usamos um número, o chamado indexador, para colocar itens no array, podemos usá-lo para obter um item específico novamente.
Eu lhe disse anteriormente que poderíamos usar uma matriz para classificar um intervalo de valores e, na verdade, é muito fácil. A classe Array contém vários métodos inteligentes para trabalhar com matrizes. Este exemplo usará números em vez de strings, apenas para tentar outra coisa, mas poderia facilmente ter sido strings. Desejo mostrar outra forma de preencher uma matriz, que é muito mais fácil se você tiver um conjunto pequeno e predefinido de itens que deseja colocar em sua matriz. Dê uma olhada:
int[] numbers = new int[5] { 4, 3, 8, 0, 5 };
Com uma linha, criamos um array com um tamanho de 5 e o preenchemos com 5 inteiros. Ao preencher a matriz dessa maneira, você obtém uma vantagem extra, pois o compilador verificará e garantirá que você não coloque muitos itens na matriz. Tente adicionar um número a mais - você verá o compilador reclamando disso.
Na verdade, isso pode ser feito ainda mais curto, assim:
int[] numbers = { 4, 3, 8, 0, 5 };
Isso é curto e você não precisa especificar um tamanho. A primeira abordagem pode ser mais fácil de ler mais tarde.
Vamos tentar classificar a matriz - aqui está um exemplo completo:
using System;
using System.Collections;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
int[] numbers = { 4, 3, 8, 0, 5 };
Array.Sort(numbers);
foreach(int i in numbers)
Console.WriteLine(i);
Console.ReadLine();
}
}
}
A única coisa nova e real aqui é o comando Array.Sort. Pode levar vários parâmetros, para vários tipos de classificação, mas neste caso, simplesmente leva nossa matriz. Como você pode ver no resultado, nossa matriz foi classificada. A classe Array também tem outros métodos, por exemplo, o método Reverse(). Você pode consultá-lo na documentação para ver todos os recursos da classe Array.
Os arrays que usamos até agora têm apenas uma dimensão. No entanto, matrizes C# podem ser multidimensionais, às vezes referidas como matrizes em matrizes. Matrizes multidimensionais vêm em dois tipos com C#: matrizes retangulares e matrizes irregulares. A diferença é que, com matrizes retangulares, todas as dimensões têm que ser do mesmo tamanho, daí o nome retangular. Uma matriz dentada pode ter dimensões de vários tamanhos. Matrizes multidimensionais são um assunto pesado e um pouco fora do escopo deste tutorial.