Novidades do C# 12: Inline Arrays
O C# 12 e o .NET 8 também trazem agora uma alternativa que busca oferecer uma maior performance na manipulação de arrays baseados em tipos primitivos: trata-se do atributo InlineArray. Implementado a partir do tipo InlineArrayAttribute (namespace System.Runtime.CompilerServices), esta nova opção pode ser utilizada em arrays que contem com um tamanho previamente definido.
Essa e outras novidades do .NET 8 e do C# 12 foram apresentadas em uma live recente do Canal .NET, cuja gravação está disponível no YouTube:
Como o próprio anúncio no blog oficial da plataforma .NET menciona, existe uma maior chance de muitos Desenvolvedores consumirem Inline Arrays ao invés de criá-los. Ainda assim, demonstrarei ao longo deste artigo como podemos codificar tipos que representem arrays e que se valem desta nova capacidade.
Na listagem a seguir temos um exemplo de implementação de um Inline Array, com o tipo MesesAno:
- O atributo InlineArray deverá ser associado a um struct que faz uso de Generics, recebendo como parâmetro o tamanho (length) do array correspondente (12 posições);
- Um membro privado (linha 8) de MesesAno representará um dos valores de uma instância deste tipo em uma determinada posição.
O arquivo .csproj do projeto descrito neste post foi alterado, com a inclusão do atributo LangVersion com o valor preview (ativando assim a utilização desta novidade do C# 12):
A listagem seguinte traz exemplos de uso de MesesAno:
- O array eventosAcumuladosPorMes armazenará uma sequência de números inteiros (int);
- Nas linhas 12 e 13 o array eventosAcumuladosPorMes é populado com valores simulados, com um cumulativo da quantidade de eventos técnicos no decorrer de um ano;
- Já nas linhas 17 e 18 os diferentes valores de eventosAcumuladosPorMes serão exibidos durante a execução da aplicação.
Na próxima imagem temos o resultado da execução desta Console Application a partir do Visual Studio 2022:
Esse exemplo está disponível no GitHub:
https://github.com/renatogroffe/CSharp12-InlineArrays/tree/main
Caso achem útil esta solução, peço por favor um ⭐️ no repositório apoiando. Fica também o convite para que vocês me sigam lá no GitHub!
E concluo este artigo com um convite…
Acompanhe neste novo evento ONLINE e GRATUITO no Canal .NET dicas, truques e alternativas úteis para o desenvolvimento Back-End e de APIs REST com .NET 7, C#, ASP.NET Core e Azure Functions. Ao longo da apresentação será coberto o uso de diferentes frameworks, serviços na nuvem, mensageria e boas práticas de forma a facilitar e tornar mais dinâmica a implementação de soluções baseadas na plataforma .NET no seu dia a dia.
Teremos também novidades do .NET 8 e C# 12 demonstradas na prática!
Quando: 25/09/2023 (segunda) a partir das 21:00 — horário de Brasília
Faça sua inscrição em:
https://bit.ly/live-backend-dotnet-set-2023