Novidades do .NET 8: alterando randomicamente a ordem de itens em Arrays e Spans
O trabalho com arrays e spans pode levar à necessidade de embaralhar os diferentes itens que compõem estruturas desse tipo, com uma reorganização que aconteça de forma randômica. Existe inclusive um algoritmo para isto, conhecido como Fisher-Yates shuffle ou Knuth shuffle. Funcionalidades para sorteio e testes aleatórios constituem bons exemplos desta implementação.
Com o .NET 8 foi adicionada uma nova capacidade à classe Random (namespace System) que oferece uma resposta a tais demandas. Trata-se do método Shuffle, acessível por meio da propriedade Shared.
As sobrecargas disponibilizadas para Shuffle permitem seu uso com arrays e spans, como demonstrado na listagem a seguir (linhas 19 e 34):
Ao executarmos este exemplo o array sugestoesCidades e o span sugestoesPratos serão embaralhados por 3 vezes cada, produzindo um resultado similar ao da imagem seguinte (utilizando o Visual Studio 2022):
Uma nova execução obviamente trará novos resultados, com diferentes ordenações:
Essa aplicação de testes foi disponibilizada no GitHub:
https://github.com/renatogroffe/DotNet8-ConsoleApp-RandomShuffle
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 deixo aqui 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