English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Array do C#

Variáveis são usadas para armazenar valores literais, enquanto arrays são usados para armazenar múltiplos valores literais.

Um array é uma estrutura de dados que armazena um número fixo de valores textuais (elementos) do mesmo tipo de dados. Os elementos do array são armazenados continuamente na memória.

No C#, os arrays podem ser de três tipos: array unidimensional, array multidimensional e array de espada. Aqui, você vai aprender sobre o array unidimensional.

A figura a seguir ilustra a forma de representação do array.

Representação de array

Declaração e inicialização de array

Você pode usar colchetes para especificar o tipo de elemento do array para declarar um array.

int[] evenNums;  // array de inteiros
string[] cities; // array de strings

A seguinte instrução declara e adiciona valores ao array em uma única instrução.

int[] evenNums = new int[5]{ 2, 4, 6, 8, 10 }; 
string[] cities = new string[3]{ "Mumbai", "London", "New York" };

No exemplo acima, o array evenNums pode armazenar no máximo cinco inteiros. new int[5] o número entre os colchetes 5 é o tamanho do array especificado. Da mesma forma, o tamanho do array cities é3Os elementos do array são adicionados à lista entre chaves {} separados por vírgulas.

Variáveis de tipo de array podem ser declaradas com var, sem colchetes [].

var evenNums = new int[]{ 2, 4, 6, 8, 10}; 
var cities = new string[]{ "Mumbai", "London", "New York" };

Se adicionar elementos ao array na declaração, o size é opcional. O compilador deduz o tamanho com base no número de elementos entre os colchetes, conforme mostrado a seguir.

int[] evenNums = { 2, 4, 6, 8, 10}; 
string[] cities = { "Mumbai", "London", "New York" }

O seguinte exemplo demonstra declaração de array inválida.

//É necessário especificar o tamanho 
int[] evenNums = new int[]; 
//O número de elementos deve ser igual ao tamanho especificado 
int[] evenNums = new int[5] { 2, 4 };
//Não pode ser usado var com inicialização de array
var evenNums = { 2, 4, 6, 8, 10};

inicialização atrasada

Não é necessário declarar e inicializar um array em uma única instrução. Você pode declarar um array primeiro e, em seguida, inicializá-lo com o operador new.

int[] evenNums;
evenNums = new int[5];
// ou
evenNums = new int[]{ 2, 4, 6, 8, 10 };

acessar elementos de um array

Pode-se usar índice para acessar elementos de um array. O índice é um número associado a cada elemento do array, começando do índice 0 até o tamanho do array-1 fim.

Os seguintes exemplos usam índice para adicionar/atualização e recuperação de elementos de um array.

int[] evenNums = new int[5];
evenNums[0] =  2;
evenNums[1] =  4;
//evenNums[6] =  12;  //lança uma exceção de tempo de execução IndexOutOfRange
Console.WriteLine(evenNums[0]);  //Saída 2
Console.WriteLine(evenNums[1});  //Saída 4

Atenção, tentar adicionar um elemento além do tamanho especificado lançará a exceção IndexOutOfRangeException.

Usar loop for para acessar o array

Usar loop for para acessar o elemento do array. Use a propriedade length do array na expressão de condição do loop.

int[] evenNums = { 2, 4, 6, 8, 10 };
for (int i = 0; i < evenNums.Length; i++}
    Console.WriteLine(evenNums[i]);  
}
for (int i = 0; i < evenNums.Length; i++}
    evenNums[i] = evenNums[i] + 10;  // Atualizar o valor de cada elemento10
}

Usar loop foreach para acessar o array

Usar loop foreach para ler o valor do elemento do array sem usar índice.

int[] evenNums = { 2, 4, 6, 8, 10}; 
string[] cities = { "Mumbai", "London", "New York" }; 
foreach (var item in evenNums) {
    Console.WriteLine(item);   
}
foreach (var city in cities) {
    Console.WriteLine(city);
}

Métodos LINQ

Todos os arrays no C# derivam da classe base abstrata System.Array.

A classe Array implementou a interface IEnumerable, permitindo usar métodos de extensão LINQ, como Max(), Min(), Sum(), reverse() e outros.

int[] nums = new int[5]{ 10, 15, 16, 8, 6 };
nums.Max(); // Retornar16
nums.Min(); // Retornar6
nums.Sum(); // Retornar55
nums.Average(); // Retornar55

A classe System.Array também inclui métodos para criar, operar, buscar e ordenar arrays.

int[] nums = new int[5]{ 10, 15, 16, 8, 6 };
Array.Sort(nums); // Ordenar o array 
Array.Reverse(nums); // Ordenar o array em ordem decrescente
Array.ForEach(nums, n => Console.WriteLine(n)); // Iterar o array
Array.BinarySearch(nums, 5);// Busca binária

Passar um array como parâmetro

Pode passar um array como parâmetro para os argumentos do método. O array é um tipo de referência, portanto, esse método pode alterar o valor dos elementos do array.

public static void Main() {
    int[] nums = { 1, 2, 3, 4, 5 };
    UpdateArray(nums); 
    foreach(var item in nums)
        Console.WriteLine(item);   
}
                    
public static void UpdateArray(int[] arr)
{
    for(int i = 0; i < arr.Length;++)
        arr[i] = arr[i] + 10;   
}

Próximo Array Multidimensional e Array de dentes.