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 :

faire d'un membre une reference, est ce possible?


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juin 2005
    Messages
    700
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Juin 2005
    Messages : 700
    Par défaut faire d'un membre une reference, est ce possible?
    Bonjour a tous.

    Je fais une dll de classe, et j'aimerai que l'un de mes membres soit une reference.

    Exemple (qui ne compile pas):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Public class MaClasse
    {
         public ref bool m_abort;
    }
    Est ce possible?

    En fait j'aimerai éviter de faire du code unsafe (pointeurs). Or m_abort existe deja ailleur dans mon appli, et sert à faire sortir tous les threads de toutes mes classes. Je ne voudrais pas avoir 36 m_abort dans mon appli....

  2. #2
    Membre émérite
    Inscrit en
    Octobre 2006
    Messages
    587
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Octobre 2006
    Messages : 587
    Par défaut
    Le mot clé ref est à utilisé uniquement pour des paramètres/arguments de méthode. bool est un type valeur, ce que tu souhaite n'est pas possible. Si tu veux qu'un des membres soit une référence, il faut utiliser des types références (sauf la classe String) donc des classes.

  3. #3
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Si c'est commun à toutes les instances de la classe, pourquoi ne pas rendre le membre statique ?

  4. #4
    Membre éclairé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juin 2005
    Messages
    700
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Juin 2005
    Messages : 700
    Par défaut
    Merci pour ces eclaircissement harz62, pour l'instant je n'arrive pas à trouver où se situe la classe Reference, vu que quand je recherche "Class Reference", ca me ressort tous les guides de reference de toutes les classes

    Mais je vais bien finir par trouver.

    tomlev : tu m'as mal compris, je n'ai pas dis que je voulais un membre commun à tous les objets d'une classe.

    J'ai une classe dans une dll, je ne veux pas que cette classe appelle ou accede à quoi que ce soit d'exterieur en dur dans le code.

    Car demain je vais surement réutiliser cette dll sur d'autres projets.
    C'est une des raisons pour laquelle j'aimerai créer un membre qui soit une référence.

  5. #5
    Expert confirmé
    Avatar de Skyounet
    Homme Profil pro
    Software Engineer
    Inscrit en
    Mars 2005
    Messages
    6 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Software Engineer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 6 380
    Par défaut
    J'ai rien compris ce que tu voulais faire.

    Qu'est ce que tu entends par un membre référence ?

    T'as qu'à faire un type nullable, là ce sera un type référence.

  6. #6
    Membre éclairé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juin 2005
    Messages
    700
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Juin 2005
    Messages : 700
    Par défaut
    aie aie aie, dur de se faire comprendre. Ok j'essaye de m'expliquer par une autre approche illustrée ce coup ci...

    Voici un bout de code, svp se concentrer sur m_abort et m_abandon, et non sur pourquoi une telle classe, pourquoi pas static,etc... Ce code ne représente pas une partie de mon programme, il met juste en évidence le probleme technique que je veux résoudre...


    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
    19
    20
    21
     class ClasseCore
        {
            private bool m_abandon;
            private Class2 m_objet;
            void Init()
            {
                m_objet = new Class2();
            }
     
            private void ToutArretter()
            {
                //Voir ma note apres le code
                this.m_abandon = true;
                m_objet.m_abort = true;
            }
        }
     
        class Class2
        {
            public bool m_abort;
        }
    Voila dans le code ci dessus, le probleme est que :
    quand je change l'etat de m_abandon, je doit penser à changer l'etat de m_abort.

    1) c'est un coup à oublier de le faire à certains endroit
    2) ca fait plusieurs instructions pour tout mettre à false, alors qu'il s'agit de la meme chose...

    J'ai un peu (à peine) mis mes idées en ordre durant la nuit, par rapport à ce qu'a ecrit harz62.

    Et j'ai tenté ceci, mais je ne suis pas sur de faire ce qu'il faut, en tout cas, ca ne compile pas :

    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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    class ClasseCore
        {
            private bool m_abandon;
            private Class2 m_objet;
            void Init()
            {
                m_objet = new Class2();
                //Dans mon esprit, c'est ici que m_objet.m_abort devient une reference de this.m_abandon
                //Du coup, m_objet.m_abort et this m_abandon ne font qu'un.
                m_objet.Abort = m_abandon;
     
            }
     
            private void ToutArretter()
            {
     
                this.m_abandon = true;
     
            }
        }
     
        class Class2
        {
            private Type m_abort;
     
            public Type Abort
            {
                get { return m_abort; }
                //Dans mon esprit, set sert justement à ce que
                //m_abort, devienne une Reference de value, donc, de m_abandon
                set
                {
                    if (typeof(value) == Boolean)
                        m_abort = value; 
                }
            }
     
     
        }
    Voila, j'espere m'etre mieux fait comprendre, en tout cas merci pour votre attention.

Discussions similaires

  1. rendre une partie d'une phrase variable dans une cellule, est ce possible?
    Par voldo2142 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 27/02/2008, 09h08
  2. Réponses: 23
    Dernier message: 11/11/2007, 20h01
  3. macro qui crée une macro, est ce possible ?
    Par Djohn dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 11/07/2007, 09h43
  4. [POO] Classe interne à une classe, est ce possible ?
    Par Matth_S dans le forum Langage
    Réponses: 13
    Dernier message: 10/02/2006, 10h24
  5. Optimiser une requête..est-ce possible ?
    Par Thierry8 dans le forum Langage SQL
    Réponses: 9
    Dernier message: 27/09/2005, 11h31

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