Novidades do C# 12: valores default em expressões lambda
Neste novo artigo dou continuidade à série sobre novidades do C# 12. Desta vez demonstrarei a possibilidade de definir valores default para parâmetros em expressões lambda, partindo para isto de um exemplo baseado no Preview 3 do .NET 8.
O primeiro artigo que publiquei para esta série sobre C# 12 pode ser acessado por meio do link:
Novidades do C# 12: utilizando um alias para referenciar um tipo
Deixo aqui também os links de outros posts deste blog, em que descrevi algumas das novidades previstas para o .NET 8:
Novidades do .NET 8: definindo valores não permitidos com DeniedValuesAttribute
Novidades do .NET 8: definindo valores possíveis com AllowedValuesAttribute
.NET 8: primeiros testes com o Preview 1 + melhorias na desserialização JSON
Para testar essa melhoria envolvendo expressões lambda no C# 12 foi necessário ativar o suporte a recursos em modo Preview no arquivo .csproj do projeto criado para testes, empregando para isto o atributo LangVersion:
A instrução a seguir exemplifica o uso de um valor default (1 no caso), em um parâmetro chamado incremento. Essa expressão será associada então à variável incrementar, de forma a possibilitar sua utilização como uma função anônima:
var incrementar = (int valor, int incremento = 1) => valor + incremento;
Podemos inclusive ter acesso ao valor que foi definido como default para o parâmetro incremento em incrementar, através da propriedade Method. É o que demonstra o trecho de código seguinte:
Console.WriteLine(
$"Incremento default = {incrementar.Method.GetParameters()[1].DefaultValue}");
Na listagem a seguir temos exemplos de uso da função anônima incrementar:
- Com a variável teste01 manteve-se a utilização do valor padrão para o parâmetro incremento, resultando em incrementos de 1;
- Já com a variável teste02 foram informados como incrementos os valores 2 e 3.
Ao executar esta Console Application a partir do Visual Studio 2022 teremos como resultado:
Esse exemplo está disponível no GitHub:
https://github.com/renatogroffe/CSharp12-DefaultValuesLambdaExpressions
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 finalizo este post com um convite…
Acompanhe neste 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: 29/05/2023 (segunda) a partir das 21:00 — horário de Brasília
Faça sua inscrição em:
https://bit.ly/live-backend-dotnet-mai-2023