Obtention de noms de variables avec réflexion
En C#, les variables peuvent apparaître sans nom dans le code IL (Intermediate Language) compilé. Cependant, nous pouvons utiliser des techniques de réflexion pour récupérer les noms de variables en exploitant les arbres d'expression.
Considérons l'exemple suivant :
var someVar = 3; Console.WriteLine(GetVariableName(someVar));
Notre objectif est de générer "someVar".
Utilisation des arbres d'expression
Reflection ne fournit pas d'accès direct aux noms de variables. Au lieu de cela, nous pouvons utiliser des arbres d'expression pour créer une fermeture qui promeut la variable vers une portée nommée. La méthode suivante y parvient :
public static string GetVariableName<T>(Expression<Func<T>> expr) { var body = (MemberExpression)expr.Body; return body.Member.Name; }
Pour utiliser cette méthode, nous enveloppons la variable dans une expression lambda :
Console.WriteLine(GetVariableName(() => someVar));
Remarque : Cette approche est fournie avec une surcharge de performances due à la création d'objets et à une utilisation intensive de la réflexion.
C# 6.0 Alternative
Avec C# 6.0, le mot-clé nameof simplifie ce processus :
Console.WriteLine(nameof(someVar));
Le mot-clé nameof fournit un moyen direct et léger de récupérer des noms de variables sans les implications en termes de performances de l'expression méthode de l'arbre.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!