Переменные PHP в .NET - PullRequest
       22

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

2 голосов
/ 28 августа 2009

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

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


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

Ответы [ 4 ]

6 голосов
/ 28 августа 2009

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

Dictionary<string,string> stuffHash = new Dictionary<string,string>();

string varname = "TheNameOfTheVar";
string value = "foo";

stuffHash[varname] = value;

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

3 голосов
/ 28 августа 2009

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

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

1 голос
/ 28 августа 2009

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

1 голос
/ 28 августа 2009

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

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

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

...