C#获取变量的名称
我有5个字符串变量。 然后我把它们列在一个列表中C#获取变量的名称,c#,C#,我有5个字符串变量。 然后我把它们列在一个列表中 如果在列表中循环到字符串变量的实际名称时有什么方法?否,则不可能。将字符串变量添加到列表时,仅存储在列表中的变量的值,而不是先前用于存储值的变量名。您可以创建字典,并按如下方式进行迭代: var dict = new Dictionary<string, string>(); dict.Add("var1", var1); ... //do it for all variables foreach (var variable in d
如果在列表中循环到字符串变量的实际名称时有什么方法?否,则不可能。将字符串变量添加到
列表时
,仅存储在列表中的变量的值,而不是先前用于存储值的变量名。您可以创建字典
,并按如下方式进行迭代:
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];
}
static void Main()
{
var someVar = 3;
Console.Write(GetVariableName(() => someVar));
}
var dict=newdictionary();
dict.Add(“var1”,var1);
... //对所有变量都这样做
foreach(dict.Keys中的var变量)
{
var varname=变量;
var varvalue=dict[变量];
}
键将是变量名,值将是变量值
编辑:
可以使用表达式树并将变量升级为闭包:
static string GetVariableName<T>(Expression<Func<T>> expr)
{
var body = (MemberExpression)expr.Body;
return body.Member.Name;
}
最后,你可以用C#6这样做:
不过,我不知道这样做的原因是什么。如果您需要将变量名保留为键,请像@wudzik sugested那样执行操作。您无法还原局部变量的名称您可以使用
字典其中key是var name,value是var value并遍历键您需要变量名做什么?您实际想要实现的是什么?可以使用C#6.0string中引入的nameof
运算符,字符串不包含其变量名或任何内容的信息。这只是一系列的字符。例如,您可以使用Tuple,其中第二项包含变量名。如果您添加到问题的链接,可能最好添加到原始问题的链接,而不是重复:@wudzik虽然问题是重复的,但我发现它更具说服力,无论如何我都会接受这个建议。非常感谢。
static void Main()
{
var someVar = 3;
Console.Write(nameof(someVar));
}