Динамическая переменная в С#?
-
16-09-2019 - |
Вопрос
Можно ли использовать динамическую переменную (не уверен в именовании) в С#?
В PHP я могу сделать
$var_1 = "2";
$var_2 = "this is variable 2";
$test = ${"var_".$var_1};
echo $test;
output: this is variable 2;
Можем ли мы сделать это на C#?
Решение
В C# вы используете словари связывать значения со строками.
Другие советы
Нет, в принципе.Компилятор не гарантирует, что переменные метода будут существовать (в их написанной форме) или с именами...
Если бы это были поля (экземплярные или статические), вы могли бы использовать отражение для получения значений;но не переменные метода.Возможно, вместо того, что вы хотите, используйте словарь?
var vars = new Dictionary<string,object>();
vars["var_1"] = "2";
vars["var_2"] = "this is variable 2";
Console.WriteLine(vars["var_" + vars["var_1"]]);
Не уверен, работает ли это с локальными переменными (и, скорее всего, нет, поскольку они хранятся как индексы), но вы можете получить доступ к свойствам класса через отражение.
Если ваш var
является полем класса, то вы можете использовать статический GetField
метод из класса Type
для получения информации о поле, например его текущего значения.
Вы не ищете простые массивы?
string[] myArray = new string[2];
myArray[0] = "2";
myArray[1] = "this is variable 2"
В противном случае лучше всего использовать словарь.