Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : Collection.clear() [ Mono / Général ] (nico_fip1)

lundi 22 mai 2006 à 11:50:33 | Collection.clear()

nico_fip1

Bonjour,
J'aurait voulu savoir à quel moment étaient suprimés les element d'une collection lors de l'appel de la fonction collection.clear();  :

collection MaColl=new collection();

MaClasse MonObjet=new MaClasse(param1,param2,....);

MaColl.Add(MonObjet);

MaClasse AutreObjet=MaColl[0] ;

MaColl.Clear();

Après exécution de ce code, il est bien sûr plus possible d'accéder à l'objet MaColl[0]
Par contre pourquoi l'objet AutreObjet existe encore ? A quel moment sera-t-il supprimé ?

Merci pour votre réponse

Nico
Strasbourg - France

lundi 22 mai 2006 à 12:56:58 | Re : Collection.clear()

SharpMao

Membre Club
Réponse acceptée !

Hello,

Deux petites choses :
Tu as dis "il est bien sûr plus possible d'accéder à l'objet MaColl[0]", tu voulais sans dout dire impossible.

Ensuite une réponse à ta question. Avant de faire le Clear, tu as deux références sur l'objet MonObjet.
Le fait d'appeler la méthode Clear ne va pas détruire l'objet, mais enlever le lien entre la collection et l'objet.
Comme l'objet est toujours utilisé par AutreObjet, il n'est pas ramassé par le GC (Garbage collector, ou ramasse miettes en français)


J'espère avoir été clair,

Amicalement, SharpMao


lundi 22 mai 2006 à 14:29:02 | Re : Collection.clear()

nico_fip1

Salut Mao..., et les autres aussi

Effectivement, mea culpa ... c'est bien IMPOSSIBLE...J'ai pas relu (pas biennn)

Par contre, ce que je ne comprends pas, c'est que pour moi :
- MonObjet est est une référance d'un objet 1, que je crée par new MaClasse()
- MaColl.Add(MonObjet); va cloner l'objet, faire un objet 2, qui aura comme référence MaColl[0] 
- MaClasse AutreObjet=MaColl[0] ; va crée une 2ème référance sur l'objet 2
- MaColl.Clear(); va supprimer l'objet 2 (et non pas que la référance)

Dans quelle étape je me trompe ?

    Nico
Strasbourg
France

lundi 22 mai 2006 à 15:13:55 | Re : Collection.clear()

SharpMao

Membre Club
Réponse acceptée !
Deux erreurs :

Add ne clône pas l'objet, mais dit simplement, "la Xème case de la collection pointe sur l'objet 1".
Clear, comme je l'ai déjà dis, ne fait qu'enlever cette référence, et ne détruit pas l'objet, tant que celui-ci est encore utilisé par une autre variable.

Amicalement, SharpMao

lundi 22 mai 2006 à 16:55:48 | Re : Collection.clear()

nico_fip1

Ok, j'ai tout à fait compris.
En fait, j'ai été perturbé, car la classe que l'utilise, qui hérite de la classe BaseCollection, est surchargée par une fontion Add(). Cette foncion Add, fait un 

base.Add(new ....);
de ce fait, avec le mot clé new, on effectue un clonage de l'objet.

Meri en tout cas pour ces 2 réponses qui sont très clairs

    Nico
Strasbourg
France



Cette discussion est classé dans : clear, collection, moment, macoll, maclasse


Répondre à ce message

Sujets en rapport avec ce message

La référence d'objet n'est pas définie à une instance d'un objet. [ par kinderman81 ] Salut,Je souhaite ajouter des objets "Concessionnaire" dans un vecteur ArrayList (qui est la liste des concessionnaires): Celui-ci est l'objet Collect Lancer un programme a un moment précis [ par Teddysan ] Tout le monde connait le moyen de lancer un programme a partir du code:Process p = new Process();p.StartInfo = new ProcessStartInfo();p.StartInfo.File Collection converter - Help [ par bucherb ] Hello la compagnie.Voila, j'ai un control self-made qui contient une collection, avec un CollectionConverter afin que le designer affiche au développe appeler les methodes d'une classe et remplir une collection en C# [ par chris81 ] j'ai creer une classe de carton et j'aimerai savoir comment il faut faire pour appeler mes methodes qui sont a l'interieur. et j'aimerai aussi savoir Collection [ par jeanajaccio ] Salut à tous,Je vais essayer d'expliquer ma demande le + simplement possible : je code un composant dans lequel je souhaite implémenter une collection Instancier une classe... [ par Yandroide ] J'ai ajouté comme référence à mon projet, une dll qui contient des classes.Quand j'essaye d'instancier une de ces classes pour utiliser les méthodes c Méthode Dispose [ par JuS ] J'ai un problème existentiel ...J'ai deux classes, par exemple MonObjet et MaClasse.class MaClasse { // Contient des instances de MonObjet Arr Collection de PictureBox [ par tfrancais ] Ca doit être une question de débutant mais comment fait-on pour créer une collection de PictureBox où chaque élèment possède un index.Est-ce qu'il exi Dur dur les debut en C# [ par chris81 ] bonjour, je viens de me mettre au C# et ben ca change la vie, pour le moment pas dans le bon sensj'ai l'habitude de vb.net alors quand je tape textbox Méthode Dispose... [ par Diamondduff ] Je débute en c#, lorsque l'on utilise une classe faut-il la refermer?j'ai vu la méthode dispose() dans la classe...Test Maclasse = New test();... acti


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,406 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.