Novidades do .NET 8: selecionando itens aleatórios de Arrays e Spans

Renato Groffe
2 min readJul 3, 2023

--

Em um artigo anterior neste blog demonstrei o uso do método Shuffle com a classe Random (namespace System), sendo que o mesmo oferece uma alternativa para “embaralhar” os itens que formam um array ou span de maneira aleatória:

Novidades do .NET 8: alterando randomicamente a ordem de itens em Arrays e Spans

Nesta nova postagem dou continuidade à série de novidades do .NET 8, abordando agora a utilização do método GetItems com Random (a partir da propriedade Shared). Esta nova funcionalidade permite que um ou mais itens de um array ou instância de ReadOnlySpan<T> sejam escolhidos aleatoriamente.

A listagem a seguir exemplifica isto:

  • GetItems foi empregado com as variáveis sugestoesCidades (um array de strings - a partir da linha 11) e sugestoesPratos (uma instância do tipo ReadOnlySpan<string> - a partir da linha 26);
  • - Os loops for escolherão um, dois e finalmente três itens de sugestoesCidades e sugestoesPratos;
  • O retorno produzido por GetItems será um array, havendo inclusive a possibilidade da presença de itens repetidos neste resultado.

Uma primeira execução desta aplicação a partir do Visual Studio 2022 produziu o seguinte resultado (em que se observam até itens repetidos para sugestoesCidades):

Clique nesta imagem para visualizar com uma melhor resolução

Numa segunda execução não ocorreram repetições a cada escolha em sugestoesCidades e sugestoesPratos:

Clique nesta imagem para visualizar com uma melhor resolução

Este exemplo foi disponibilizado no GitHub:

https://github.com/renatogroffe/DotNet8-ConsoleApp-RandomGetItems

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: 17/07/2023 (segunda) a partir das 21:00 — horário de Brasília

Faça sua inscrição em:
https://bit.ly/live-backend-dotnet-jul-2023

--

--

Renato Groffe
Renato Groffe

Written by Renato Groffe

Microsoft Most Valuable Professional (MVP), Multi-Plataform Technical Audience Contributor (MTAC), Software Engineer, Technical Writer and Speaker