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

Windows Forms Discussion :

[C#][1.1] - Comment tester l'existence d'un objet.


Sujet :

Windows Forms

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Mars 2003
    Messages
    281
    Détails du profil
    Informations personnelles :
    Âge : 51

    Informations forums :
    Inscription : Mars 2003
    Messages : 281
    Par défaut [C#][1.1] - Comment tester l'existence d'un objet.
    Bonjour,

    Quel est l'équivalent de la fonction Assigned(obj) de delphi.

    Tester obj==null ne suffit pas
    je voudrais etre sur que "obj" n'a pas été détruit.

    Merci.

  2. #2
    Membre émérite
    Avatar de shwin
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    568
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Novembre 2003
    Messages : 568
    Par défaut
    j'ai tjrs utiliser == null pour savoir si mon objet existe.

    Fait voir ton bout de code!!

  3. #3
    Membre éclairé
    Inscrit en
    Mars 2003
    Messages
    281
    Détails du profil
    Informations personnelles :
    Âge : 51

    Informations forums :
    Inscription : Mars 2003
    Messages : 281
    Par défaut
    Prenons le code suivant sous D7 :
    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
     
    var
       MaListe : Tlist;
       Obj : TUnObjetQuelconque;
    begin
       ...
     
        MaListe.add(obj); 
        obj.free;
       // a ce stade, MaListe[0] contient toujours l'adresse de l'objet obj.
       // => le test de la valeur nulle ne suffit pas :
       if ( MaListe[0]!=nil) then
        TUnObjetQuelconque( Maliste[0]).UneMethode; // Provoque une exception   (normal)
     
       //Pour ne pas avoir d'erreur :
       if assigned( MaListe[0])  then
           TUnObjetQuelconque( Maliste[0]).UneMethode
      else
          Maliste.Remove(0) ;  // on purge la ligne
    end;
    Maintenant quand on est en C#

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    ArrayList MaListe = new ArrayList();
    MaClasse Obj = new MaClasse();
    MaListe.add(Obj);
    Si quelque part dans l'application, Obj est volontairement détruit (par exemple via l'interface IDisposable),
    Que renvoi MaListe[0] ? null ou une référence d'objet ?
    Est-ce que MaListe est modifié (obj supprimé de la liste => un élément de moins dans la liste)

    Mes questions sont peut-etre basiques, mais je ne connais pas encore toute les subtilités du C#

    Merci.

  4. #4
    Rédacteur
    Avatar de Thomas Lebrun
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    9 161
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Par défaut
    Lorsque tu fais:

    MaListe.add(Obj);

    tu stockes une copie de ton objet dans l'ArrayList.

    Si Obj est détruit dans ton programme, MaListe[0] contiendra toujours un objet de type MaClasse


    A+

  5. #5
    Membre éclairé
    Inscrit en
    Mars 2003
    Messages
    281
    Détails du profil
    Informations personnelles :
    Âge : 51

    Informations forums :
    Inscription : Mars 2003
    Messages : 281
    Par défaut
    Morpheus, ta réponse m'étonne et m'inquiète un peu.

    Ca veut dire que, que si je modifie ((MaClasse) MaListe[0]).ProprieteX
    alors Obj n'est pas modifié ( et vice-et-versa).

    Si je ne me trompe pas, le comportement sous D7 est différent.
    Quand je fais MaListe.Add(obj) en pascal :
    obj et MaListe[0] pointe sur le meme objet.

    Dans ce cas comment faut'il faire en C# ?
    Je veux que MaListe[0] et obj représente le même objet

    Merci.

  6. #6
    Rédacteur
    Avatar de Thomas Lebrun
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    9 161
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Par défaut
    Citation Envoyé par RamDevTeam
    Morpheus, ta réponse m'étonne et m'inquiète un peu.

    Ca veut dire que, que si je modifie ((MaClasse) MaListe[0]).ProprieteX
    alors Obj n'est pas modifié ( et vice-et-versa).
    Le mieux est de faire le test toi même (comme je l'ai fait car j'ai eu un doute)mais oui, c'est bien cela

    Si je ne me trompe pas, le comportement sous D7 est différent.
    Quand je fais MaListe.Add(obj) en pascal :
    obj et MaListe[0] pointe sur le meme objet.
    En D7, les ArrayList contiennent des pointeurs ?
    Je ne connais pas Delphi donc là, on voit bien une différence entre les 2 langages


    A+

Discussions similaires

  1. [PL/SQL] Comment tester l'existence d'un champ?
    Par nanou9999 dans le forum Oracle
    Réponses: 4
    Dernier message: 19/04/2012, 15h25
  2. Réponses: 3
    Dernier message: 23/01/2006, 15h40
  3. comment tester l'existence d'un propriété?
    Par korntex5 dans le forum Langage
    Réponses: 2
    Dernier message: 06/01/2006, 14h23
  4. Socket : comment tester l'existence d'un serveur?
    Par bios dans le forum Réseau
    Réponses: 4
    Dernier message: 26/12/2005, 16h51
  5. [IdTCP] Comment tester l'existence de messages en attente ?
    Par HopeLeaves dans le forum Web & réseau
    Réponses: 1
    Dernier message: 29/06/2005, 10h03

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