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.
![](https://static.imasters.com.br/wp-content/uploads/2023/08/29090554/Captura-de-Tela-2023-08-29-%C3%A0s-09.05.42.png)
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):
![](https://static.imasters.com.br/wp-content/uploads/2023/08/29090622/Captura-de-Tela-2023-08-29-%C3%A0s-09.06.11.png)
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.
![](https://static.imasters.com.br/wp-content/uploads/2023/08/29090702/Captura-de-Tela-2023-08-29-%C3%A0s-09.06.52.png)
Na próxima imagem temos o resultado da execução desta Console Application a partir do Visual Studio 2022:
![](https://miro.medium.com/v2/resize:fit:1400/1*atkPmlEbRCKbwk5nRNtmXQ.png)
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 uma estrela 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
*O conteúdo deste artigo é de responsabilidade do(a) autor(a) e não reflete necessariamente a opinião do iMasters.