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

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

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

$var_1 = "2";
$var_2 = "this is variable 2";

$test = ${"var_".$var_1};

echo $test;

output: this is variable 2;

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

Ответ 1

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

Ответ 2

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

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

var vars = new Dictionary<string,object>();
vars["var_1"] = "2";
vars["var_2"] = "this is variable 2";

Console.WriteLine(vars["var_" + vars["var_1"]]);

Ответ 3

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

Ответ 4

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

Ответ 5

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

string[] myArray = new string[2];

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

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