Maison > développement back-end > C++ > Comment puis-je obtenir le nom d'une variable C# au moment de l'exécution ?

Comment puis-je obtenir le nom d'une variable C# au moment de l'exécution ?

Linda Hamilton
Libérer: 2024-12-27 03:56:09
original
272 Les gens l'ont consulté

How Can I Get a C# Variable's Name at Runtime?

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));
Copier après la connexion

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;
}
Copier après la connexion

Pour utiliser cette méthode, nous enveloppons la variable dans une expression lambda :

Console.WriteLine(GetVariableName(() => someVar));
Copier après la connexion

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));
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal