Je ne pense pas que ce soit théoriquement possible. Pensez à ce scénario:
MyClass a, b;
a = new MyClass();
b = a;
Console.WriteLine("name of b is " + SomeMagicClass.GetVarName(b));
//Should it be "b" or "a"?
Je suis sûr qu'il ya une meilleure explication concernant le code généré MIDL le long des lignes de nom de variable même pas être présent lors de l'exécution.
EDIT Hélas j'avais tort. Inspiré par le post de Jon Skeet à propos de la gestion des exceptions Null Reference et se rappelant soudainement de la projection, il existe un moyen de le faire.
est ici codez de travail complet:
public static class ObjectExtensions {
public static string GetVariableName<T>(this T obj) {
System.Reflection.PropertyInfo[] objGetTypeGetProperties = obj.GetType().GetProperties();
if(objGetTypeGetProperties.Length == 1)
return objGetTypeGetProperties[0].Name;
else
throw new ArgumentException("object must contain one property");
}
}
class Program {
static void Main(string[] args) {
string strName = "sdsd";
Console.WriteLine(new {strName}.GetVariableName());
int intName = 2343;
Console.WriteLine(new { intName }.GetVariableName());
}
}
en double de http://stackoverflow.com/questions/729803/print-name-of-the-variable-in-c –
objets n'a pas de noms. Les variables ont des noms et les variables contiennent _references_ aux objets. De plus, deux variables (éventuellement avec des noms différents) peuvent faire référence au même objet. –
Quelle langue utilisez-vous spécifiquement? J'ai essayé de recréer VB.NET, pas de chance ... – Moshe