Como escrever código `HasFlag` legível em C# minimizando a sobrecarga em tempo de execução
(github.com/KBluePurple)Contexto de desenvolvimento
Este pacote foi criado para evitar facilmente a geração de garbage causada por boxing sempre que se usa o HasFlag padrão de Enum ao desenvolver jogos em Unity ou ao usar C#!
Como funciona
Usando Source Generator, ele encontra em tempo de compilação as declarações de enum com [Flag] no código e gera automaticamente métodos de extensão personalizados HasFlagNonAlloc.
Funcionalidades
Você pode escrever código HasFlag de forma legível com uma sobrecarga em tempo de execução quase zero!
var currentState = PlayerState.Idle | PlayerState.Walking;
// HasFlag tradicional (ocorre boxing)
if (currentState.HasFlag(PlayerState.Idle))
{
// ...
}
// Implementação de verificação HasFlag para evitar boxing
if ((currentState & PlayerState.Idle) == PlayerState.Idle)
{
// ...
}
// Após instalar o NonAllocFlagGenerator
if (currentState.HasFlagNonAlloc(PlayerState.Idle))
{
// ...
}
Como é meu primeiro projeto open source de verdade (?), ainda há muitas limitações, mas estou criando coragem para publicá-lo!
Espero que seja útil ao escrever código sensível a desempenho.
Feedback é muito bem-vindo!
Ainda não há comentários.