繁体   English   中英

C# 获取变量名

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM