Sintaxe de expressões de coleção
Inicialize matrizes, listas e spans de maneira uniforme.
Sintaxe de expressões de coleção é uma aula grátis de C# Academy no CoddyKit. Esta é a aula 1 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de C# Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de C# Academy inclui 4 aulas no total.
Expressões de coleção (C# 12)
O C# 12 introduz expressões de coleção: uma única sintaxe de colchetes para criar matrizes, listas, segmentos de memória e muito mais. Em vez de new int[] { 1, 2, 3 }, basta escrever [1, 2, 3].
using System;
int[] numbers = [1, 2, 3, 4, 5];
Console.WriteLine(string.Join(",", numbers)); // 1,2,3,4,5Uma sintaxe, muitos destinos
O mesmo literal [...] funciona quando o destino é uma matriz, um List<T> ou um Span<T>. O compilador escolhe a construção adequada.
using System;
using System.Collections.Generic;
int[] arr = [1, 2, 3];
List<int> list = [4, 5, 6];
Span<int> span = [7, 8, 9];
Console.WriteLine(arr.Length + " " + list.Count + " " + span.Length);Coleções vazias
Uma expressão de coleção vazia é simplesmente []. Ela é mais clara do que Array.Empty<T>() ou new List<T>() e determina o tipo de destino automaticamente.
using System;
using System.Collections.Generic;
int[] empty = [];
List<string> names = [];
Console.WriteLine(empty.Length + " " + names.Count); // 0 0Substituindo inicializadores prolixos
As expressões de coleção eliminam a verbosidade da sintaxe antiga de inicializadores. Compare as duas formas abaixo.
using System;
using System.Collections.Generic;
// old
List<int> oldWay = new List<int> { 1, 2, 3 };
// new
List<int> newWay = [1, 2, 3];
Console.WriteLine(oldWay.Count == newWay.Count); // TrueColeções aninhadas
É possível aninhar expressões de coleção para criar matrizes denteadas ou listas de listas.
using System;
int[][] grid = [[1, 2], [3, 4], [5, 6]];
Console.WriteLine(grid[1][0]); // 3Expressões como elementos
Os elementos podem ser qualquer expressão, incluindo variáveis, chamadas de método e operações aritméticas.
using System;
int x = 10;
int[] values = [x, x * 2, x + 5, Math.Abs(-3)];
Console.WriteLine(string.Join(",", values)); // 10,20,15,3Observação sobre matrizes multidimensionais
As expressões de coleção criam matrizes denteadas (int[][]), não matrizes retangulares (int[,]). As matrizes retangulares continuam usando sua própria sintaxe.
using System;
int[][] jagged = [[1, 2, 3], [4, 5]];
Console.WriteLine(jagged[0].Length + " " + jagged[1].Length); // 3 2Trabalhando com intervalos
Como as expressões de coleção podem ter como destino Span<T> e ReadOnlySpan<T>, o compilador pode usar alocação na pilha, evitando lixo no heap para dados de curta duração.
using System;
ReadOnlySpan<int> stackData = [1, 2, 3, 4];
int total = 0;
foreach (int n in stackData) total += n;
Console.WriteLine(total); // 10Passando coleções para métodos
Quando o tipo de um parâmetro é uma coleção, é possível passar uma expressão de coleção diretamente no local da chamada.
using System;
static int Sum(int[] xs) {
int t = 0;
foreach (int x in xs) t += x;
return t;
}
Console.WriteLine(Sum([2, 4, 6])); // 12Ganhos de legibilidade
As expressões de coleção são especialmente úteis em código com muitos dados, como tabelas de configuração ou dados de teste, em que os colchetes mantêm o foco nos valores.
using System;
string[] days = ["Mon", "Tue", "Wed", "Thu", "Fri"];
Console.WriteLine(days[^1]); // FriRetornando coleções
Um método pode retornar uma expressão de coleção, com o tipo de retorno orientando sua construção.
using System;
static int[] Primes() => [2, 3, 5, 7, 11];
Console.WriteLine(string.Join(",", Primes())); // 2,3,5,7,11Verificação rápida
Verifique sua compreensão dos conceitos básicos das expressões de coleção.
Recapitulação
Você aprendeu a sintaxe de expressões de coleção do C# 12.
[1, 2, 3]substitui inicializadores prolixos.[]é uma coleção vazia.- Ela usa tipagem pelo destino: matrizes, listas e intervalos funcionam.
- Colchetes aninhados criam matrizes denteadas.
Perguntas Frequentes
A aula “Sintaxe de expressões de coleção” é grátis?
Sim — o texto completo de “Sintaxe de expressões de coleção” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de C# Academy, atualize para CoddyKit PRO. O curso de C# Academy inclui 4 aulas no total.
O que vou aprender em “Sintaxe de expressões de coleção”?
Inicialize matrizes, listas e spans de maneira uniforme. Você pratica C# Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar C# Academy?
Nenhuma experiência prévia é necessária. C# Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 1 de 4.
Quanto tempo leva a aula “Sintaxe de expressões de coleção”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de C# Academy?
Sim. Cada aula de C# Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.
Todas as aulas deste curso
- Sintaxe de expressões de coleção
- O elemento de expansão
- Tipagem pelo destino em coleções
- Construtores de coleções