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.
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.
j'ai tjrs utiliser == null pour savoir si mon objet existe.
Fait voir ton bout de code!!
Prenons le code suivant sous D7 :
Maintenant quand on est en C#
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;
Si quelque part dans l'application, Obj est volontairement détruit (par exemple via l'interface IDisposable),
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 ArrayList MaListe = new ArrayList(); MaClasse Obj = new MaClasse(); MaListe.add(Obj);
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.
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+
Thomas LEBRUN: MCAD.NET, MCTS (Win et Web), MCPD(Win et Web) & Microsoft MVP Client Application Development
WPF par la pratique, mon livre sur WPF ! (également disponible ici ou là)
A la découverte de .NET
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.
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 celaEnvoyé par RamDevTeam
En D7, les ArrayList contiennent des pointeurs ?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.
Je ne connais pas Delphi donc là, on voit bien une différence entre les 2 langages
A+
Thomas LEBRUN: MCAD.NET, MCTS (Win et Web), MCPD(Win et Web) & Microsoft MVP Client Application Development
WPF par la pratique, mon livre sur WPF ! (également disponible ici ou là)
A la découverte de .NET
Partager