Novidades do C# 12: valores default em expressões lambda

Renato Groffe
3 min readMay 7, 2023

--

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:

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

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

--

--

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

No responses yet