imprimer le nom de la variable en c#
j'ai une déclaration
int A = 10,B=6,C=5;
et je veux écrire une fonction d'impression tel que je passe la variable int et
il imprime-moi le nom de la variable et la valeur.
par exemple si je l'appelle d'impression(A)
il doit retourner ": 10", et d'impression (B), alors il doit retourner "B:6"
en bref je veux savoir comment puis-je accéder le nom de la variable et l'imprimer pour l'chaîne en c#. DOIS-je utiliser la réflexion?
Après avoir lu les réponses
Salut à tous, merci pour les suggestions fournies. Je vais essayer, mais je voulais savoir si il est possible de tout .NET 2.0? Rien de semblable à
#define prt(x) std::cout << #x " = '" << x << "'" << std::endl;
macro qui est dans C/C++?
OriginalL'auteur Anirudh Goel | 2009-04-08
Vous devez vous connecter pour publier un commentaire.
La seule façon raisonnable de le faire serait d'utiliser le
Expression
API; mais qui modifie le code encore plus loin...Remarque: si c'est à des fins de débogage, assurez-vous d'ajouter
[Conditional("DEBUG")]
à la méthode, à l'aide d'une variable de cette façon, les changements de la nature du code, de manière subtile.Salut Marc, rien de semblable à #define prt(x) std::cout << #x " = '" << x << "'" << std::endl; est-il en C#?
Vous apprenez quelque chose de nouveau chaque jour.
OriginalL'auteur
Vous pouvez utiliser des expressions lambda:
OriginalL'auteur
Ce n'est pas possible sans "aide" du site d'appel; de même, la réflexion ne doit pas connaître les noms de variables locales.
Strictement parlant, il a besoin .NET 3.5 ainsi que le C# 3.0
La question, dit "print ()" - il n'est pas possible.
OriginalL'auteur
Ce n'est pas possible de le faire avec de la réflexion (voir Brian et Joël). En général, ce n'est pas possible tout simplement parce que vous ne pouvez pas garantir une valeur nommée est transmis à la fonction d'impression. Par exemple, je pourrais tout aussi facilement effectuer les opérations suivantes
Aucune de ces expressions, en réalité, a un nom. Qu'attendez-vous pour imprimer ici?
Je pense que, il est supposé qu'un nom de variable sera passé à la fonction, puisque l'utilisateur lui-même va utiliser le programme. Si votre ligne de la pensée est de droit. C'est juste mon POV.
OriginalL'auteur
Une autre solution (à partir d'un fermé le post):
Inspiré par Jon Skeet est post à peu près Nulle de Référence de la gestion des exceptions et tout à coup rappelé à propos de la projection il y a un chemin un peu.
Ici est complète de travail codez:
OriginalL'auteur
Ici, dans l'avenir, il nous suffit d'utiliser la nameof opérateur.
OriginalL'auteur