est-il possible d'utiliser une variable dynamique (pas certaine de nommage) en C #?
en PHP, je peux faire P>
$var_1 = "2";
$var_2 = "this is variable 2";
$test = ${"var_".$var_1};
echo $test;
output: this is variable 2;
5 Réponses :
in c #, vous utilisez dictionnaires pour associer des valeurs avec des chaînes . p>
Pas exactement ce que je voulais, mais le dictionnaire serait bien aussi bien! Merci!
Non, fondamentalement. Le compilateur ne garantit pas que les variables de méthodes existeront (sous leur forme comme écrit) ou avec des noms ...
S'ils étaient des champs (instance ou statique), vous pouvez utiliser la réflexion pour obtenir les valeurs; Mais pas la méthode variables. Pour ce que vous voulez, utilisez peut-être un dictionnaire comme substitut? P>
Je ne comprends pas cette partie de la deuxième phrase "Les variables de la méthode existeront (sous leur forme comme écrit) ou avec des noms ...". Je comprends le reste de votre réponse, je ne comprends tout simplement pas le sens de cette phrase. Pourriez-vous clarifier ce que cela signifie?
Il veut dire que les noms de variables ne sont pas garantis pour être sauvés avant d'être exécutés, alors même si vous pouviez faire quelque chose comme ça, "$ var_2" n'existerait pas après la compilation.
Je ne sais pas si cela fonctionne avec des variables locales (et le plus probablement, cela ne peut pas être stocké en tant qu'index), mais vous pouvez accéder aux propriétés de classe par réflexion. P>
Si votre var code> est un champ de classe, vous pouvez utiliser la statique getfield code> méthode de la classe Type code> Pour obtenir des informations sur le champ, telles que sa valeur actuelle. P>
Vous ne cherchez pas de tableaux simples?
string[] myArray = new string[2]; myArray[0] = "2"; myArray[1] = "this is variable 2"
Ne comparons pas une langue de script avec un langage de programmation. Vous pouvez faire la même chose dans l'ASP uni, car il s'agit également d'un langage de script, mais C # est un langage de programmation qui utilise OOP. Juste pour ajouter, vous avez des variables dynamiques dans .NET 4