Novidades do .NET 9: melhorias em Debug.Assert

Renato Groffe
2 min readNov 13, 2024

--

O método Assert da classe Debug (namespace System.Diagnostics) permite incluir checagens a nível de código, com as mesmas sendo executadas durante o debugging de uma aplicação (em modo Release tais verificações são automaticamente ignoradas). Essa capacidade está presente já há algum tempo na plataforma .NET, representando uma alternativa bastante interessante para cenários mais avançados de depuração de aplicações.

Vale destacar que Debug.Assert conta com sobrecargas que permitem especificar uma mensagem descritiva, além da possibilidade de não se indicar mensagem alguma. O .NET 9 traz uma melhoria relacionada a esta capacidade, gerando como saída a representação textual da condição especificada em Debug.Assert caso não conste uma mensagem na chamada a este método.

Partindo do exemplo apresentado na listagem seguinte:

E considerando a instrução:

Debug.Assert(int.TryParse(input, out var number) && number > 0);

Ao informar uma sequência de texto (abcd) como entrada, a chamada a Debug.Assert produzirá um erro em que constará a condição fornecida como parâmetro à mesma:

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

O mesmo tipo de comportamento também está previsto para um valor negativo (-10):

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

Já no próximo print podemos observar a saída produzida em um cenário sem erros (número inteiro maior do que zero):

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

Em .NET 8 esta mesma implementação com Debug.Assert não geraria uma saída com a condição checada, por mais que tal validação levasse a uma falha:

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

Disponibilizei este exemplo no GitHub:

https://github.com/renatogroffe/DotNet9-ConsoleApp-DebugAssert

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!

--

--

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

Responses (1)