Property

Résolu
cs_eldim Messages postés 956 Date d'inscription lundi 30 mai 2005 Statut Membre Dernière intervention 21 août 2014 - 8 nov. 2006 à 10:16
cs_eldim Messages postés 956 Date d'inscription lundi 30 mai 2005 Statut Membre Dernière intervention 21 août 2014 - 8 nov. 2006 à 17:49
Bonjour,

En VB.NET on peut passer des paramètres aux properties. Comment fait on en C# pour faire la même chose ?
car j'ai essayé en faisant de la traduction pur et dure mot à mot mais là ça ne fonctionne pas :

public String Valeur(String P)
{
      get
      {
            return MaFonction(P);
      }
      set (String Value)
      {
            MaProcedure(P,Value);
      }
}

Pouvez-vous m'aider

-- Pourquoi faire simple quand on peut faire compliquer --

11 réponses

cs_Bidou Messages postés 5487 Date d'inscription dimanche 4 août 2002 Statut Membre Dernière intervention 20 juin 2013 61
8 nov. 2006 à 14:57
Salut,

L'équivalent exacte n'existe pas en C#.
Soit tu utilises une Property qui fait un get/set d'une valeur (ou un object) soit tu écris une (ou deux) méthode(s) qui permettent de faire un get/set

public type getMethod(parameters)
{
  return ...;
}

public void setMethod(parameters)
{

}

<hr size="2" />-Blog-
3
leprov Messages postés 1160 Date d'inscription vendredi 23 juillet 2004 Statut Membre Dernière intervention 21 octobre 2010 17
8 nov. 2006 à 10:45
public string Valeur
{
get
{
return m_Valeur;
}
set
{
m_Valeur = value;
}

}
0
cs_eldim Messages postés 956 Date d'inscription lundi 30 mai 2005 Statut Membre Dernière intervention 21 août 2014 1
8 nov. 2006 à 10:56
il manque le paramètre...
y a pas moyen en C# ?

-- Pourquoi faire simple quand on peut faire compliquer --
0
ShareVB Messages postés 2676 Date d'inscription vendredi 28 juin 2002 Statut Membre Dernière intervention 13 janvier 2016 26
8 nov. 2006 à 12:21
salut,

en C#, le paramètre implicite de set s'appelle value...tu n'a donc pas besoin de le préciser explicitement...d'ailleurs un setter à forcément un et un seul paramètre donc préciser le nom ne sert théoriquement à rien...sauf à VB.net pour ne pas perdre les programmeur VB6...

ShareVB
0

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

Posez votre question
ShareVB Messages postés 2676 Date d'inscription vendredi 28 juin 2002 Statut Membre Dernière intervention 13 janvier 2016 26
8 nov. 2006 à 12:24
d'ailleurs si tu veux faire un getter/setter dans un tableau interne tu utiliseras la syntaxe suivante :

        public un_type this[int index]
        {
            get
            {
                return ton_tableau[index];
            }
            set

            {

                ton_tableau[index] = value;

            }            
        }
   
    index pourrait aussi être d'un autre type (string par ex)...

ShareVB
0
cs_eldim Messages postés 956 Date d'inscription lundi 30 mai 2005 Statut Membre Dernière intervention 21 août 2014 1
8 nov. 2006 à 13:48
Merci pour ta réponse mais en vb on peut faire + sans passer par un tableau et je souhaite trouver l'équivalent en C# (le value n'a rien à voir la dedans) :
exemple
property Truc(sTruc as string, Bidule as Collection, Machin as integer, ...) as string
get
...
end get
set (Value as string)
...
end set

-- Pourquoi faire simple quand on peut faire compliquer --
0
cs_eldim Messages postés 956 Date d'inscription lundi 30 mai 2005 Statut Membre Dernière intervention 21 août 2014 1
8 nov. 2006 à 15:03
ok merci snif

et dire que tout le monde dit que le C# est mieux que le vb... défois je me demande...

-- Pourquoi faire simple quand on peut faire compliquer --
0
ShareVB Messages postés 2676 Date d'inscription vendredi 28 juin 2002 Statut Membre Dernière intervention 13 janvier 2016 26
8 nov. 2006 à 16:40
salut,

faire une property avec plusieurs arguments, c'est faire une méthode...une property c'est machin.prop valeur ou v machin.prop...donc une
propriété ne peut avoir qu'UN et UN seul argument : value...

c'est donc plus logique que VB...

ShareVB
0
cs_eldim Messages postés 956 Date d'inscription lundi 30 mai 2005 Statut Membre Dernière intervention 21 août 2014 1
8 nov. 2006 à 16:49
je ne trouve pas

on peut très bien faire "machin.prop(TRUC, BIDULE, CHOUETTE) = valeur"

-- Pourquoi faire simple quand on peut faire compliquer --
0
cs_badrbadr Messages postés 475 Date d'inscription jeudi 19 juin 2003 Statut Membre Dernière intervention 3 novembre 2008 1
8 nov. 2006 à 17:12
Je suis du meme avis que ShareVB (mais je suis aussi un parti pris et sans aucune connaissance synatxique en VB :)
De toute façon, en code IL, les propriétés sont transformés en fonctions paramétrées (Préfixé par Get ou Set je pense). Chaque langage a sa manière d'exposer les possibilités offertes par le CLR/IL.
Les propriétés servent juste à respecter les guidlines, éviter les affectations directes et autres tites choses intéressantes (comme dans les interfaces)
Quand vient le moment de passer plusieurs paramètres (outre qu'une simple affectation ou récupération de valeur), je suis d'avis qu'une méthode est la meilleure option. Ça rend en plus le code plus facile à lire.
C'est une simple question d'habitude.


[:D] @++
0
cs_eldim Messages postés 956 Date d'inscription lundi 30 mai 2005 Statut Membre Dernière intervention 21 août 2014 1
8 nov. 2006 à 17:49
les habitudes sont dures à changer... pour moi utiliser c'est property c'un gain de codage non négligeable pour mes class
mais bon les gout et les couleurs...
par contre en IL ça passe bien visiblement mais lorsque je met ça dans une DLL VB et que j'essai de l'utiliser en C# ben il me met deux méthodes distinctes donc c'est bien une carrence à mon sens de C# par rapport à vb.net

merci pour toutes vos interventions

-- Pourquoi faire simple quand on peut faire compliquer --
0
Rejoignez-nous