Tutorial de array C#: criar, declarar, inicializar

โšก Resumo Inteligente

Em C#, os arrays armazenam uma coleรงรฃo de tamanho fixo de elementos que compartilham o mesmo tipo de dados sob um รบnico nome de variรกvel. Cada elemento รฉ indexado a partir de zero, o que torna a declaraรงรฃo, inicializaรงรฃo e acesso a valores rรกpidos e previsรญveis.

  • ๐Ÿ“Œ Definiรงรฃo: Um array armazena mรบltiplos valores de um mesmo tipo em posiรงรตes indexadas, acessadas por meio de uma รบnica variรกvel.
  • โœ… Declaraรงรฃo: Um tipo de dados seguido por colchetes e um nome declara uma matriz, por exemplo, valores Int32[].
  • ๐Ÿ”ข Inicializaรงรฃo: A nova palavra-chave define o tamanho, entรฃo cada รญndice recebe um valor como values[0]=1.
  • ๐Ÿ” Acesse em: A indexaรงรฃo baseada em zero lรช ou escreve qualquer elemento, portanto o primeiro item รฉ values[0] e a contagem comeรงa em 0.
  • ๐Ÿ” Iteraรงรฃo: Um loop foreach percorre cada elemento sem รญndice, o que evita erros de รญndice fora do intervalo em arrays maiores.
  • ๐Ÿค– Assistรชncia de IA: O GitHub Copilot gera cรณdigo boilerplate para arrays, enquanto o ML.NET carrega arrays numรฉricos como recursos para modelos de aprendizado de mรกquina.

Matrizes em C#

O que รฉ um array em C#?

Uma matriz รฉ usada para armazenar uma coleรงรฃo ou sรฉrie de elementos. Esses elementos serรฃo do mesmo tipo.

Por exemplo, se vocรช tivesse uma matriz de valores inteiros, a matriz poderia ser uma coleรงรฃo de valores como [1, 2, 3, 4]. Aqui o nรบmero de elementos na matriz รฉ 4.

Matrizes sรฃo รบteis quando vocรช deseja armazenar uma coleรงรฃo de valores do mesmo tipo. Entรฃo, em vez de declarar um variรกvel para cada elemento, vocรช pode declarar apenas uma variรกvel.

Esta variรกvel apontarรก para um array ou lista de elementos, que serรก responsรกvel por armazenar os elementos do array.

Vejamos como podemos trabalhar com arrays em C#. Em nosso exemplo, declararemos um array de nรบmeros inteiros e trabalharemos com eles de acordo.

Observe que todo o cรณdigo abaixo estรก sendo criado no arquivo Program.cs.

Passo 1) Declarando um array โ€“ O primeiro passo รฉ declarar um array. Vamos ver como podemos conseguir isso com o exemplo de cรณdigo abaixo.

Matrizes em C#

Code Explicaรงรฃo:-

  1. A primeira parte รฉ a tipo de dados. Ele especifica o tipo de elementos usados โ€‹โ€‹no array. Portanto, em nosso caso, estamos criando um array de nรบmeros inteiros.
  2. A segunda parte [ ], que especifica a classificaรงรฃo da matriz. (A classificaรงรฃo รฉ um espaรงo reservado que especifica o nรบmero de elementos que a matriz conterรก)
  3. O prรณximo รฉ o nome do array que no nosso caso รฉ 'valores'. Observe que vocรช vรช um sublinhado verde ondulado, nรฃo se preocupe com isso. Isso รฉ apenas .Net dizendo que vocรช declarou um array, mas nรฃo o usou em lugar nenhum.

Passo 2) A prรณxima etapa รฉ inicializar o array. Aqui vamos especificar o nรบmero de valores que o array conterรก. Tambรฉm atribuiremos valores a cada elemento do array.

Matrizes em C#

Code Explicaรงรฃo:-

  1. Primeiro, estamos definindo o nรบmero de elementos que o array conterรก como 3. Portanto, entre colchetes, estamos dizendo que o array conterรก 3 elementos.
  2. Em seguida, atribuรญmos valores a cada elemento da matriz. Podemos fazer isso especificando o nome da variรกvel + a posiรงรฃo do รญndice na matriz. Assim, `values[0]` significa que estamos armazenando um valor na primeira posiรงรฃo da matriz. Da mesma forma, para acessar a segunda posiรงรฃo, usamos a notaรงรฃo `values[1]` e assim por diante.

Observaรงรฃo: โ€“ Em Arrays, a posiรงรฃo do รญndice comeรงa em 0.

Passo 3) Vamos agora exibir os elementos individuais do array no Console. Vamos adicionar o cรณdigo abaixo para conseguir isso.

Matrizes em C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DemoApplication
{
 class Program
 {
  static void Main(string[] args) 
  {
   Int32[] value;
   value=new Int32[3];
   
   value[0]=1;
   value[1]=2;
   value[2]=3;
   
   Console.WriteLine(value[0]);
   Console.WriteLine(value[1]);
   Console.WriteLine(value[2]);
    
   Console.ReadKey(); 
  }
 }
}

Code Explicaรงรฃo:-

Esta รฉ a parte simples em que apenas usamos o mรฉtodo Console.WriteLine para enviar cada valor do elemento para o console.

Observe que, novamente, estamos acessando cada elemento com a ajuda do nome da variรกvel do array junto com a posiรงรฃo do รญndice.

Se o cรณdigo acima for inserido corretamente e o programa for executado, a seguinte saรญda serรก exibida.

Saรญda:

Matrizes em C#

Na saรญda, vocรช pode ver todos os valores da matriz sendo exibidos no Console.

Como percorrer um array em C# usando foreach

Ler cada elemento pelo seu รญndice funciona, mas torna-se tedioso quando um array contรฉm muitos valores. O loop `foreach` oferece uma maneira mais limpa de visitar cada elemento de um array em ordem, sem... tracrei, uma variรกvel de รญndice vocรช mesmo.

A instruรงรฃo `foreach` pega cada item da matriz um de cada vez e o copia para uma variรกvel de loop. Em seguida, vocรช usa essa variรกvel dentro do corpo do loop. Como o loop para automaticamente no รบltimo elemento, o `foreach` elimina o risco de ler alรฉm do final da matriz.

using System;
namespace DemoApplication
{
 class Program
 {
  static void Main(string[] args)
  {
   Int32[] values = new Int32[3] {1, 2, 3};
   foreach (Int32 item in values)
   {
    Console.WriteLine(item);
   }
   Console.ReadKey();
  }
 }
}

O exemplo acima declara e inicializa um array de trรชs inteiros e, em seguida, percorre-o com um loop `foreach`. A cada iteraรงรฃo, a variรกvel item recebe o prรณximo valor e Console.WriteLine o imprime. A saรญda sรฃo os nรบmeros 1, 2 e 3 em linhas separadas.

Pontos-chave a lembrar sobre o uso de foreach com arrays:

  • A variรกvel de loop รฉ somente leitura, portanto, o mรฉtodo `foreach` รฉ mais adequado para ler valores do que para alterรก-los diretamente.
  • Para modificar elementos enquanto olhapingEm vez disso, use um loop for com um รญndice.
  • O mรฉtodo `foreach` funciona com arrays unidimensionais, arrays multidimensionais e qualquer coleรงรฃo que suporte iteraรงรฃo.

Matrizes multidimensionais em C#

Os arrays mostrados atรฉ agora sรฃo unidimensionais, ou seja, armazenam uma lista simples de valores. O C# tambรฉm suporta arrays multidimensionais, que organizam os elementos em uma grade de linhas e colunas. Um array bidimensional รฉ a forma mais comum e adequada para dados como matrizes, tabuleiros de jogos e tabelas.

Vocรช declara um array bidimensional colocando uma vรญrgula dentro dos colchetes. Cada vรญrgula extra adiciona uma dimensรฃo, entรฃo `int[,]` รฉ bidimensional e `int[,,]` รฉ tridimensional. Os elementos sรฃo acessados โ€‹โ€‹com um รญndice por dimensรฃo.

using System;
namespace DemoApplication
{
 class Program
 {
  static void Main(string[] args)
  {
   int[,] matrix = new int[2, 2] { {1, 2}, {3, 4} };
   Console.WriteLine(matrix[0, 0]);
   Console.WriteLine(matrix[1, 1]);
   Console.ReadKey();
  }
 }
}

Aqui, a matriz de array contรฉm duas linhas e duas colunas. O elemento `matrix[0, 0]` retorna 1 e `matrix[1, 1]` retorna 4. O nรบmero de dimensรตes รฉ fixo quando o array รฉ declarado, enquanto o tamanho de cada dimensรฃo รฉ definido quando o array รฉ criado.

C# Matrizes Irregulares

Um array irregular รฉ um array cujos elementos sรฃo, eles prรณprios, arrays. Ao contrรกrio de um array multidimensional retangular, cada array interno pode ter um comprimento diferente, razรฃo pela qual um array irregular รฉ frequentemente chamado de array de arrays. Essa flexibilidade รฉ รบtil quando as linhas naturalmente contรชm quantidades diferentes de valores.

Vocรช declara um array irregular com dois conjuntos de colchetes e, em seguida, cria cada array interno separadamente. O exemplo a seguir constrรณi um array irregular onde a primeira linha contรฉm trรชs valores e a segunda linha contรฉm dois.

using System;
namespace DemoApplication
{
 class Program
 {
  static void Main(string[] args)
  {
   int[][] jagged = new int[2][];
   jagged[0] = new int[] {1, 2, 3};
   jagged[1] = new int[] {4, 5};
   Console.WriteLine(jagged[0][2]);
   Console.WriteLine(jagged[1][1]);
   Console.ReadKey();
  }
 }
}

A expressรฃo jagged[0][2] lรช o terceiro elemento da primeira linha, que รฉ 3, e jagged[1][1] lรช o segundo elemento da segunda linha, que รฉ 5. Como cada linha รฉ um array separado, os arrays irregulares usam a memรณria de forma eficiente quando os comprimentos das linhas variam, embora precisem de uma etapa extra para inicializar cada array interno.

Perguntas Frequentes

A propriedade Length retorna o nรบmero total de elementos em uma matriz C#. Por exemplo, values.Length retorna 3 para uma matriz de trรชs elementos. Para matrizes multidimensionais, GetLength(dimension) retorna o tamanho de cada dimensรฃo especรญfica.

Em AC#, um array tem um tamanho fixo definido na sua criaรงรฃo, enquanto uma lista cresce e diminui dinamicamente. Arrays sรฃo mais rรกpidos para dados fixos e usam menos sobrecarga, enquanto uma lista รฉ adequada para coleรงรตes cujo nรบmero de elementos muda em tempo de execuรงรฃo.

Um array padrรฃo em C# armazena elementos de um รบnico tipo declarado, portanto, misturar tipos nรฃo รฉ permitido. Para armazenar tipos diferentes, declare um array de objetos (object[]) ou use uma coleรงรฃo como ArrayList, embora ambas as opรงรตes sacrifiquem a seguranรงa de tipos em tempo de compilaรงรฃo.

O mรฉtodo estรกtico Array.Sort organiza os elementos de uma matriz C# em ordem crescente, diretamente no array. Passe a matriz para Array.Sort(values) e use Array.Reverse Em seguida, em ordem decrescente. A classificaรงรฃo funciona com nรบmeros, strings e outros tipos semelhantes.

O mรฉtodo `Array.Copy` duplica um intervalo de elementos de um array para outro, enquanto o mรฉtodo `Clone` cria uma cรณpia superficial de todo o array. Atribuir uma variรกvel de array a outra copia apenas a referรชncia, nรฃo os elementos subjacentes.

Uma exceรงรฃo `IndexOutOfRangeException` ocorre quando o cรณdigo acessa uma posiรงรฃo de array que nรฃo existe, como `values[5]` em um array de trรชs elementos. Como os arrays em C# sรฃo indexados a partir de zero, os รญndices vรกlidos variam de 0 atรฉ o comprimento menos um. Sempre verifique o รญndice primeiro.

Sim. O GitHub Copilot sugere declaraรงรตes de arrays, inicializaรงรฃo e lรณgica de loop a partir de um comentรกrio ou nome de mรฉtodo dentro do Visual Studio e VS Code. RevAnalise cada sugestรฃo para dimensionamento correto e limites de รญndice, pois o Copilot pode introduzir erros de unidade e valores fora do intervalo.

O ML.NET representa vetores de caracterรญsticas e entradas de modelos como arrays C#, tipicamente arrays de float[]. Os dados de treinamento sรฃo carregados em arrays ou spans, e as previsรตes retornam arrays de pontuaรงรตes. O tamanho fixo e a indexaรงรฃo rรกpida dos arrays os tornam eficientes para pipelines de aprendizado de mรกquina.

Resuma esta postagem com: