2015-11-27 2 views
-2

У меня есть 5 строковых переменных. Затем я помещал их в список.C# Получение имени переменной

Если есть путь при переходе по списку к фактическому имени строковой переменной?

+0

Вы не можете восстановить имена локальных переменных –

+4

Вы можете использовать 'Dictionary ' где key - это имя var и значение var и итерация через ключи – wudzik

+0

Для чего вам нужно имя переменной? что вы на самом деле пытаетесь достичь? – Sayse

ответ

0

Нет, это невозможно. При добавлении строковой переменной в List<string> используется только значение переменной, хранящейся в списке, а не имя переменной, которое используется для хранения значения раньше.

1

Вы можете создать 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]; 
} 

Ключ будет имя переменной, а значение будет значение переменной

0

Here you can see how you can do this. The question is about reflection, but the accepted answer is what you need.

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.

+1

если вы добавите ссылку на вопрос, возможно, лучше добавить ссылку на исходный вопрос, а не дублировать: http://stackoverflow.com/questions/72121/finding-the-variable-name-passed-to-a-function-in -c-sharp – wudzik

+1

@wudzik, в то время как вопрос повторяется, я считаю его более убедительным, я буду принимать этот совет в любом случае. Спасибо. –

Смежные вопросы