Динамическая переменная в С#?

Можно ли использовать динамическую переменную (не уверенную в наименовании) в С#?

В PHP я могу сделать

$var_1 = "2";
$var_2 = "this is variable 2";
$test = ${"var_".$var_1};
echo $test;
output: this is variable 2;

Можем ли мы сделать это на С#?

5 ответов

В С# вы используете словари для связывания значений со строками.


Нет, в принципе. Компилятор не гарантирует, что переменные метода будут существовать (в их форме как написано) или с именами...

Если они были полями (экземплярами или статическими), вы могли бы использовать отражение для получения значений; но не переменные метода. Для чего вы хотите, возможно, использовать словарь в качестве замены?

var vars = new Dictionary<string,object>();
vars["var_1"] = "2";
vars["var_2"] = "this is variable 2";
Console.WriteLine(vars["var_" + vars["var_1"]]);
</string,object>


Не уверен, что это работает с локальными переменными (и, скорее всего, это не так, поскольку они хранятся как индексы), но вы можете получить доступ к свойствам класса через отражение.


Если ваш var - это поле класса, вы можете использовать статический метод GetField из класса Type, чтобы получить информацию о поле, такую ​​как текущее значение.


Вы не ищете простые массивы?

string[] myArray = new string[2];
myArray[0] = "2";
myArray[1] = "this is variable 2"

Друг-словарь - это способ пойти.

licensed under cc by-sa 3.0 with attribution.