Utiliser une instance comme propriété

lemmingperceval Messages postés 128 Date d'inscription mardi 18 décembre 2007 Statut Membre Dernière intervention 2 août 2009 - 22 janv. 2008 à 11:43
cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 - 9 févr. 2008 à 21:49
Bonjour,
Est-ce quelqu'un connait la façon d'utiliser une instance en tant que propriété?

Un petit exemple pour aider:

Class1.cs
public class Box
{
private Size location;
public Size Location
{
get { return location; }
set { location = value; }
}
public Box()
{

}
}

Class2.cs
public class BoxManager
{
public BoxManager()
{
Box b = new Box();
this.b.Location.Width = 3;
}
}

Résumé : Box à une propiété Location(Size) qui à une propriété Width et Height.

Je pourrai faire dans la class Box une propriété LocationX et LocationY, mais j'aimerai savoir si la première solution est possible.

Merci de votre aide

LP

7 réponses

lemmingperceval Messages postés 128 Date d'inscription mardi 18 décembre 2007 Statut Membre Dernière intervention 2 août 2009 6
22 janv. 2008 à 11:46
Ouais sans retour à la ligne c'est pas lisible...

Class1.cs
public class Box
{
private Size location;
public Size Location
{ get { return location; }
set { location = value; }
}

public Box()
{
}
}

Class2.cs
public class BoxManager
{
public BoxManager()
{
Box b = new Box();
this.b.Location.Width = 3;
}
}

Résumé : Box à une propiété Location(Size) qui à une propriété Width et Height. Je pourrai faire dans la class Box une propriété LocationX et LocationY, mais j'aimerai savoir si la première solution est possible. Merci de votre aide LP
0
cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
26 janv. 2008 à 23:39
Salut,

Si tu utilises Opera, passe par un autre navigateur pour poster, sinon les retours à la ligne passent à la trappe.

/*
coq
MVP Visual C#
CoqBlog
*/
0
lemmingperceval Messages postés 128 Date d'inscription mardi 18 décembre 2007 Statut Membre Dernière intervention 2 août 2009 6
28 janv. 2008 à 09:03
Oui c'est exacte je l'ai remarqué seulement après.
Par contre, mmmh je sais que tu connais pas mal le language, tu as pas d'idée par rapport à mon problème?
...je pense que non. Schade fur mich!
0
lemmingperceval Messages postés 128 Date d'inscription mardi 18 décembre 2007 Statut Membre Dernière intervention 2 août 2009 6
28 janv. 2008 à 09:08
Class1.cs
public class Box
{
      private Size location;

      public Size Location
      {
            get { return location; }
            set { location = value; }
       }


       public Box()
       {


       }
}


Class2.cs
public class BoxManager
{
      public BoxManager()
      {
            Box b = new Box();
            this.b.Location.Width = 3;
      }
}


Résumé : Box à une propiété Location(Size) qui à une propriété Width et Height.
Je pourrai faire dans la class Box une propriété LocationX et LocationY,
mais j'aimerai savoir si la première solution est possible. Merci de votre aide LP
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
2 févr. 2008 à 18:48
      public BoxManager()
      {
            Box b = new Box();
            this.b.Location.Width = 3;
      }

Il y a 2 problèmes dans ton code :

this. b.Location.Width = 3;
this ne peut pas être utilisé sur une variable locale : http://msdn2.microsoft.com/fr-fr/library/dk1507sz.aspx
> b.Location.Width 3;

Une fois ce problème réglé, le message du compilateur t'expliquera que Size est un type valeur, et qu'à ce titre le retour de la prorpiété Location ne peut être modifié.

Box b = new Box();
Size bSize = b.Location;
bSize.Width = 3;
b.Location = bSize;

Par contre là le nom de la propriété et le type sont contradictoire : pourquoi indiquer une position avec un type représentant une dimension ?

/*
coq
MVP Visual C#
CoqBlog
*/
0
lemmingperceval Messages postés 128 Date d'inscription mardi 18 décembre 2007 Statut Membre Dernière intervention 2 août 2009 6
5 févr. 2008 à 10:07
Oui tu as raison pour la contradication: Je me suis trompé. La variable Location est de Type Point

Class1.cs
public class Box
{
      private Point location;

      public Point Location
      {
            get { return location; }
            set { location = value; }
       }


       public Box()
       {


       }
}

Pour le message d'erreur, c'est bien celui là que je recois et c'est donc là que je voudrai règlé le problème.
Tu m'as donné la solution d'instancier une nouvelle Size (bSize qui, d'après ma modification, sera du Type Point (bLocation)), de lui setter les donnée et ensuite assigner l'instance à b.Location.
Mais n'est-il pas possible de setter de cette manière : b.Location.X = 3?
0
cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
9 févr. 2008 à 21:49
Le type Point est soumis aux mêmes contraintes que le type Size.

/*
coq
MVP Visual C#
CoqBlog
*/
0
Rejoignez-nous