[RESOLU]-[DB-AL] - Problème - Le nom d'une variable est égale a un string ?

Pour les scripts écrits en C#
Règles du forum
Merci de respecter la NOMENCLATURE suivante pour vos TITRES de messages :

Commencez par le niveau de vos scripts
DB = Débutant
MY = Moyen
CF = Confirmé

Puis le domaine d'application
-RS = Réseau
-AL = Algorithmie

Exemple :

[DB-RS] Mouvement perso multijoueur
General_Bright
Messages : 11
Inscription : 31 Août 2017 14:41
Localisation : Chambery

[RESOLU]-[DB-AL] - Problème - Le nom d'une variable est égale a un string ?

Message par General_Bright » 23 Sep 2017 18:28

Bonjours , alors j'ai un petit problème : J'aimerais que le nom d'une variable int soit la chaîne de caractère d'une variable string
Par ex :

Code : Tout sélectionner

public string NomVariableInt = a;
public int ""+a;
Est-ce possible ?

Merci d'avance !
Dernière édition par General_Bright le 24 Sep 2017 15:58, édité 1 fois.

Avatar de l’utilisateur
ZJP
Messages : 5748
Inscription : 15 Déc 2009 06:00

Re: [DB-AL] - Problème - Le nom d'une variable est égale a un string ?

Message par ZJP » 23 Sep 2017 21:58

"Simplement" non !!!. Le nom de la variable doit être connu lors de la compilation.
Maintenant, en programmation "avancée" grâce à la Réflexion sans doute ?!. Mais ça, c'est une autre histoire. :mrgreen:

Utilises un tableau de variable. ;-)

Avatar de l’utilisateur
Max
Messages : 8772
Inscription : 30 Juil 2011 13:57
Contact :

Re: [DB-AL] - Problème - Le nom d'une variable est égale a un string ?

Message par Max » 24 Sep 2017 10:35

Hello,
ZJP a écrit :
23 Sep 2017 21:58
Utilises un tableau de variable. ;-)
c'est le premier truc qui m'est venu à l'esprit. Maintenant @General_Bright, comme tu n'en dit pas plus sur le pourquoi du comment de cette approche, difficile de bien conseiller ;)

Une solution aussi sinon, serait de passer par les dictionnaires (Dictionary) .
genre

Code : Tout sélectionner

   Dictionary<string, int> d = new Dictionary<string, int>();
        d.Add("var1", 1234);
        d.Add( nomVariableInt , 2345);
        d.Add( nomVariableInt+"e" , valInt);
        etc...
   
Image
Pas d'aide par MP, le forum est là pour ça.
En cas de doute sur les bonnes pratiques à adopter sur le forum, consulter la Charte et sa FAQ

Avatar de l’utilisateur
simonj
Messages : 293
Inscription : 29 Nov 2015 20:47
Localisation : Lyon

Re: [DB-AL] - Problème - Le nom d'une variable est égale a un string ?

Message par simonj » 24 Sep 2017 15:35

Salut,

Comme dit plus haut, il faut utiliser la Reflection et ce n'est pas facile.

Je l'ai fait pour un script moi. Donc je peux t'aiguiller si tu veux vraiment le faire. Tu récupères des infos avec "Type.GetField" ou "TypeGetProperty" en fonction du type de variable. Ce qui te donne une variable de type "MemberInfo".

Une fois que tu as ton MemberInfo, tu peux récupérer la valeur de cette variable sur un objet grâce à "FieldInfo.GetValue" ou "PropertyInfo.GetValue" en fonction du type de variable et en lui spécifiant le script cible.

Ce qui te donne :

Code : Tout sélectionner

public string variableName = "";
public UnityEngine.Object target = null;

// Get the property of the variable on the type of the script
public MemberInfo GetProperty()
    {
        if (target != null)
        {
            MemberInfo propName = target.GetType().GetField(variableName);
            if (propName != null)
            {
                return propName;
            }
            propName = target.GetType().GetProperty(variableName);
            if (propName != null)
            {
                return propName;
            }
        }

        return null;
}

// Return an object that contain the value of the variable. You must cast the result to use it as a given type
public System.Object GetPropertyValue()
    {
        System.Object value = null;

        MemberInfo property = GetProperty();
        if (property != null)
        {
            try
            {
                if (property is FieldInfo)
                {
                    value = (property as FieldInfo).GetValue(
                        target // So we specify who owns the object
                    );
                }
                else if (property is PropertyInfo)
                {
                    value = (property as PropertyInfo).GetValue(
                        target, // So we specify who owns the object
                        null
                    );
                }
            }
            catch (Exception e) { }
        }

        return value;
}
Attention ça reste du code assez complet et complexe pour un niveau débutant. Si tu ne sais pas ce que tu fais, je ne te conseil pas d'utiliser ces scripts. Il doit surement y avoir une autre méthode pour faire ce que tu veux faire.

General_Bright
Messages : 11
Inscription : 31 Août 2017 14:41
Localisation : Chambery

Re: [DB-AL] - Problème - Le nom d'une variable est égale a un string ?

Message par General_Bright » 24 Sep 2017 15:51

Merci beaucoup de votre aide et avoir pris la peine de me lire mais sa devient beaucoup trop complexe pour moi ! ^^
Donc je vais laisser tomber (J'ai d'autres projets) ,

Encore merci et désoler de vous avoir fait perde votre temps.

Avatar de l’utilisateur
ZJP
Messages : 5748
Inscription : 15 Déc 2009 06:00

Re: [DB-AL] - Problème - Le nom d'une variable est égale a un string ?

Message par ZJP » 24 Sep 2017 21:15

General_Bright a écrit :
24 Sep 2017 15:51
Merci beaucoup de votre aide et avoir pris la peine de me lire mais sa devient beaucoup trop complexe pour moi ! ^^
Donc je vais laisser tomber (J'ai d'autres projets) ,

Encore merci et désoler de vous avoir fait perde votre temps.
Si tu expliques ton souci, on aura sans doute une solution plus facile à te proposer.

Répondre

Revenir vers « (C#) CSharp »