Salut à toutes et à tous,
J'ai un problème concernant la création d'un objet.
Dans un application, je ne peux pas avoir deux objets avec les mêmes valeurs.
Je stock donc tous les objets créés dans un list. Dans le constructeur je test la présence d'un objet ayant ces valeurs.
Actuellement, si je trouve un de ces objets, je retourne une erreur, mais je voudrais plutôt retourner l'objet trouvé.
Puisqu'un constructeur est void, il ne peut pas retourner d'objet.
On ne peut pas non plus mettre d'objet de retour dans un constructeur (si je mets public Ligne Ligne(paramètres) j'obtiens "les noms de membres doivent être différents de leur type englobant").
Aussi, je suppose que j'objet est créé à l'ouverture du constructeur, sinon on ne pourrait utiliser this.variable = ...
Dans ce cas, comment détruire l'objet rendu inutile, puisque dans le constructeur on n'a pas de this.dispose ou autre ?
En d'autres termes, ceci fonctionne
mais je préférerais quelque chose comme
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 public Ligne(Point ptExtremite1, Point ptExtremite2, double longueurForcée = 0.0) { Vecteur v = Vecteur._listeVecteurs.Find(ptExtremite1, ptExtremite2); if (v != null) throw new VecteurException(string.Format("Un vecteur de type '{0}' avec les extrémités aux points '{1}' et '{2}' existe déjà.", v.GetType().Name, v.PtExtremite1, v.PtExtremite2)); this._idVecteur = _nextID++; this.PtExtremite1 = ptExtremite1; this.PtExtremite2 = ptExtremite2; this.LongueurForcée = longueurForcée; Vecteur._listeVecteurs.Add(this); }
Comment puis-je faire ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 public Ligne Ligne(Point ptExtremite1, Point ptExtremite2, double longueurForcée = 0.0) { Vecteur v = Vecteur._listeVecteurs.Find(ptExtremite1, ptExtremite2); if (v != null) return v as Ligne; this._idVecteur = _nextID++; this.PtExtremite1 = ptExtremite1; this.PtExtremite2 = ptExtremite2; this.LongueurForcée = longueurForcée; Vecteur._listeVecteurs.Add(this); return this; }
Merci de vos z'avis z'avisés,
Jean-Marc
Partager