[英]C# Getting the name of the variable
我有 5 个字符串变量。 然后我把它们放在一个列表中。
如果在遍历列表到字符串变量的实际名称时有办法?
您可以创建Dictionary<string,string>
并像这样迭代它:
var dict = new Dictionary<string, string>();
dict.Add("var1", var1);
... //do it for all variables
foreach (var variable in dict.Keys)
{
var varname = variable;
var varvalue = dict[variable];
}
键是变量名,值是变量值
不,这是不可能的。 将字符串变量添加到List<string>
,仅存储在列表中的变量的值,而不是先前用于存储值的变量名称。
在这里,您可以看到如何做到这一点。 问题是关于反思,但公认的答案正是您所需要的。
编辑:
您可以使用表达式树并将变量提升为闭包:
static string GetVariableName<T>(Expression<Func<T>> expr)
{
var body = (MemberExpression)expr.Body;
return body.Member.Name;
}
你可以使用这样的方法:
static void Main()
{
var someVar = 3;
Console.Write(GetVariableName(() => someVar));
}
最后,您可以使用 C# 6 以这种方式执行此操作:
static void Main()
{
var someVar = 3;
Console.Write(nameof(someVar));
}
不过,我不知道这样做的原因是什么。 如果您需要将变量名保留为键,请像@wudzik sugested 那样操作。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.