IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

Questions sur les classes en C#


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    86
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 86
    Par défaut Questions sur les classes en C#
    Bonjour,


    1) Est-ce qu'il est possible en C# d'appeler une méthode qui modifie une variable sans avoir à l'appeler. Je m'explique:
    Exemple: J'ai une classe "Toto" avec un element "x"

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    public class Toto
    {
      private int x;
      public void SetX(int value)
      {
        x = value;
      }
      public int GetX(void)
      {
        return x;
      }
    }
    Je voudrais pouvoir modifier/récupérer la valeur de "x" sans utiliser GetX et SetX mais en faisant:
    Toto titi;
    titi.x = 4;
    int test = titi.x;

    Et ce, sans avoir à déclarer x comme public (pour pouvoir faire des opérations lors de l'affectaion ou la déclaration d'une valeur).

    Pour résumer, je voudrais pouvoir appeler des méthodes sans utilier "()" pour modifier ou récupérer des valeurs.

    2) Est ce qu'il est possible, comme en C++ de contrôler les cast d'une classe (désolé, je connais pas les mots pour l'expliquer).

    Exemple: J'ai une classe VECTOR3 que je veux donner en argument à une méthode qui prend comme paramètre un tableau de float.

    En C++ je peux faire une classe comme celle-ci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
    class VECTOR3{
    public:
     
    	float Array[3];
     
    	VECTOR3()
    	{
    		x = 0.0f; y = 0.0f; z = 0.0f;
    	};
     
    	inline operator float*() 	
    	{ 		
    		return Array; 	
    	}
     
    	~VECTOR3(){};
    };
    et la passer en argument à une méthode:

    VECTOR3 toto;
    MaMethode(toto);

    avec:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    void MaMethode(float* arg){...}

  2. #2
    Membre Expert Avatar de LaChips
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    1 109
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 109
    Par défaut
    Bonjour,
    Oui c'est possible mais avec les get / set

    ta classe :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    public class Toto
    {
      private int x;
      public int X
      {
        set { x = value; }
        get { return x; }
      }
    }
    et après tu y accèdes :
    Toto titi;
    titi.x = 4;
    int test = titi.x;

  3. #3
    Membre Expert
    Homme Profil pro
    Inscrit en
    Juillet 2007
    Messages
    1 277
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Réunion

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 277
    Par défaut
    Bonjour pour la première partie, C# utilise des accesseurs :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    private int x;
    public int X {
       get { return x; }
       set { x = value; }
    }
    value est un mot-clé C# qui représente la valeur lors de l'assignation.

  4. #4
    Membre Expert Avatar de Guulh
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    2 160
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2007
    Messages : 2 160
    Par défaut
    Et pour la deuxième partie, avec les opérateurs de conversion :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    class Machin()
    {
        private float[] tableau;
        public static implicit operator float[](Machin machin)
        {
            return machin.tableau;
        }
    }
    Si tu remplaces implicit par explicit, ca rend le cast obligatoire.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    public f(float[] tab) {...}
    f(machin); // compile que si le cast est "implicit"
    f((float[])machin); // compile d

  5. #5
    Membre Expert Avatar de Guulh
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    2 160
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2007
    Messages : 2 160
    Par défaut
    Et pour la deuxième partie, avec les opérateurs de conversion :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    class Machin
    {
        private float[] tableau;
        public static implicit operator float[](Machin machin)
        {
            return machin.tableau;
        }
    }
    Si tu remplaces implicit par explicit, ca rend le cast obligatoire.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    public f(float[] tab) {...}
    f(machin); // compile que si le cast est "implicit"
    f((float[])machin); // compile dans les deux cas.

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    86
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 86
    Par défaut
    Merci beaucoup. Je vais tester ça ce soir.

    Quelques demandes de précisions:

    1) Et est que le nom "X" doir avoir un rapport avec "x".
    Est ce que je peux faire ça:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    private int gogo[4];
    public int X {
       get { return gogo[3]; }
       set { gogo[3] = value; }
    }
    Toujours pour pouvoir faire:
    Toto titi;
    titi.x = 4;
    int test = titi.x;

    "X" devient forcement "x" ? Comment faire si j'ai une variable que je veux appeler "X" (titi.X)

  7. #7
    Membre Expert
    Homme Profil pro
    Inscrit en
    Juillet 2007
    Messages
    1 277
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Réunion

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 277
    Par défaut
    1) Oui, il n'y a aucun rapport entre X et x. Les propriétés sont notées en case pascal en général. Enfin, private int gogo[4] veut rien dire je crois

    2) Je comprends pas la question...

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    86
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 86
    Par défaut
    2) Je comprends pas la question...
    Quelle question ? Dans mon dernier message ou dans mon premier message ?

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Question sur les classes (car problème lors de la compilation)
    Par beegees dans le forum Débuter avec Java
    Réponses: 9
    Dernier message: 09/10/2009, 17h23
  2. question sur les classes "static"
    Par Asmod_D dans le forum C++
    Réponses: 4
    Dernier message: 05/04/2009, 17h27
  3. Questions sur les classes.
    Par Lartiste007 dans le forum Débuter
    Réponses: 4
    Dernier message: 05/04/2009, 14h46
  4. Questions sur les classes.
    Par DarkSeiryu dans le forum Windows Forms
    Réponses: 8
    Dernier message: 06/02/2009, 09h21
  5. Un question sur les classes
    Par willycat dans le forum C++
    Réponses: 10
    Dernier message: 22/08/2008, 17h55

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo