2 points par clash4970 2025-03-17 | Aucun commentaire pour le moment. | Partager sur WhatsApp

Contexte de développement

Ce package a été développé pour éviter facilement la création de garbage due au boxing chaque fois qu’on utilise HasFlag sur les enums de base en C#, notamment lors du développement de jeux Unity.

Fonctionnement

À l’aide d’un Source Generator, il repère à la compilation les déclarations d’enum portant l’attribut [Flag] et génère automatiquement une méthode d’extension personnalisée HasFlagNonAlloc.

Fonctionnalités

Il devient possible d’écrire du code HasFlag lisible avec une surcharge à l’exécution proche de zéro.

var currentState = PlayerState.Idle | PlayerState.Walking;  
  
// HasFlag existant (boxing)  
if (currentState.HasFlag(PlayerState.Idle))  
{  
    // ...  
}  
  
// Implémentation d’une vérification HasFlag qui évite le boxing  
if ((currentState & PlayerState.Idle) == PlayerState.Idle)  
{  
    // ...  
}  
  
// Après l’installation de NonAllocFlagGenerator  
if (currentState.HasFlagNonAlloc(PlayerState.Idle))  
{  
    // ...  
}  

C’est mon premier vrai projet open source, donc il lui manque encore beaucoup de choses, mais je me lance avec courage pour le partager.
J’espère qu’il sera utile à celles et ceux qui écrivent du code sensible aux performances.

Tous les retours sont les bienvenus !

Aucun commentaire pour le moment.

Aucun commentaire pour le moment.