Переменные переменных PHP в .NET.

Поддерживает ли .NET что-либо подобное переменным переменным PHP?

Если нет, то как можно было бы максимально легко реализовать такую ​​функцию?


1 Если вы считаете, что переменные переменные всегда плохие, не стесняйтесь изложить свое дело, но главный вопрос: как они могут быть реализованы?

Это функция, глубоко встроенная в динамические языки . C # имеет свои корни как статический, объектно-ориентированный язык, и до C # 3.0 это означает, что вам не удастся добиться того, чего вы хотите каким-либо правильным образом. Однако C # 4.0 / .NET 4.0 представляет dynamic ключевое слово , которое позволяет динамически вводить переменные, как в PHP. К сожалению, хотя это шаг вперед на пути к тому, что C # становится статическим / динамическим гибридным языком, в нем отсутствует важная функция eval которую имеет почти каждый динамический язык. С распространенной функцией компилятора как сервис C # 5.0 / .NET 5.0 это будет эффективно введено (хотя внутреннее поведение не будет одинаковым). До тех пор нет никакого достойного решения, кроме того, что он использует Dictionary для хранения имен переменных.

Почему бы просто не использовать словарь?

 Dictionary<string,string> stuffHash = new Dictionary<string,string>(); string varname = "TheNameOfTheVar"; string value = "foo"; stuffHash[varname] = value; 

Нет необходимости делать эту уродливую вещь.

.Net не поддерживает «переменные переменные» изначально – вероятно, главным образом потому, что это [строго типизированный язык] [1].

Тем не менее, он поддерживает динамическое создание экземпляров типа во время выполнения, которое может использоваться для выполнения аналогичных действий в качестве переменных переменных PHP.

Нет, ни один из языков .NET не поддерживает ничего подобного. Это может быть реализовано одной из команд компилятора, но я сомневаюсь, что они это сделают.

Что касается того, как это может быть реализовано вами (а не командой компилятора C #), было бы хранить все ваши переменные в Dictionary<String,Object> – это позволит вам связать строку с объектом.

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