У меня есть 5 строковых переменных. Затем я помещал их в список.C# Получение имени переменной
Если есть путь при переходе по списку к фактическому имени строковой переменной?
У меня есть 5 строковых переменных. Затем я помещал их в список.C# Получение имени переменной
Если есть путь при переходе по списку к фактическому имени строковой переменной?
Нет, это невозможно. При добавлении строковой переменной в List<string>
используется только значение переменной, хранящейся в списке, а не имя переменной, которое используется для хранения значения раньше.
Вы можете создать 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];
}
Ключ будет имя переменной, а значение будет значение переменной
Edit:
вы можете использовать деревья выражений и продвигать переменную в закрытие:
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.
если вы добавите ссылку на вопрос, возможно, лучше добавить ссылку на исходный вопрос, а не дублировать: http://stackoverflow.com/questions/72121/finding-the-variable-name-passed-to-a-function-in -c-sharp – wudzik
@wudzik, в то время как вопрос повторяется, я считаю его более убедительным, я буду принимать этот совет в любом случае. Спасибо. –
Вы не можете восстановить имена локальных переменных –
Вы можете использовать 'Dictionary' где key - это имя var и значение var и итерация через ключи –
wudzik
Для чего вам нужно имя переменной? что вы на самом деле пытаетесь достичь? – Sayse