IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB.NET Discussion :

Difference entre get/set ect. Public Property ect.


Sujet :

VB.NET

  1. #1
    Inactif  
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    497
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 497
    Points : 312
    Points
    312
    Par défaut Difference entre get/set ect. Public Property ect.
    Bonjour,

    Quel est la différence entre ces deux écritures ? Accessibilité, Performances, Ressources Mémoires ...


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    Private _strPhone As String
     
             Public Property Phone() 
                Get
                    Return _strPhone
                End Get
                Set(ByVal value As String)
                    _strPhone = value
                End Set
            End Property

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    Private _strPhone As String
     
         Public function getPhone() as String
              Return _strPhone
         End Sub
     
         Public Sub setPhone( value as String) 
              _strPhone = value
         End Sub
    Merci bien.

  2. #2
    Expert confirmé
    Avatar de Aspic
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2005
    Messages
    3 905
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2005
    Messages : 3 905
    Points : 4 388
    Points
    4 388
    Par défaut
    La première est plus propre et c'est elle qui faut utiliser et c'est le but des property !

    Question performance, c'est pareil... mais pour la lisibilité, la première méthode est beaucoup mieux.
    Qui ne tente rien n'a rien !
    Ce qui ne nous tue pas nous rends plus fort !!
    Mon projet ZELDA en C++/Allegro
    http://www.tutoworld.com - Le Forum -
    Mes ressources Dotnet (cours, sources, tutos)
    --------------------------------------------
    + + =

    Ne pas oublier le Tag !

  3. #3
    Membre chevronné
    Avatar de olsimare
    Inscrit en
    Décembre 2006
    Messages
    1 179
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 179
    Points : 1 776
    Points
    1 776
    Par défaut
    Bonjour.

    Le get/set est clairement plus propre et en plus c'est quand même sympa pour pouvoir lister les propriétés de la class via reflection plutôt que d'interpréter des sub getQuelquechose.

    D'autant plus que ce que tu écris n'est correct (une sub as string ??? et qui fait des return ???)

    Autre point, pour des propriétés qui rendent des objets qui ont eu même leur propre méthodes, la solution à base de getBidule(bidule as objet) t'oblige à allouer d'abord ton bidule et ensuite seulement à pouvoir accéder à ces propriétés ou méthodes --> moyen en terme de perf.
    De plus, avec les getbidule, faut gérer les byref à la main.
    Pour finir, VS peut t'avertir des incohérences en les types utilisés dans les get/set pour définir la propriété alors que cela doit se gérer à la main avec le getbidule.

    Exemple en code :
    Solution à proscrire :
    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
    21
    22
    23
    24
    25
    26
    27
    28
     
    '
    ' test du truc
            Dim cTest As New clsTest
            Dim dt As New DataTable
            cTest.getPhone(dt)
            MsgBox(dt.Columns(0).ColumnName)
     
    ...
    ' 
    ' Solution pas terrible
    Public Class clsTest
        Private _strPhone As DataTable
        Public Sub New()
            _strPhone = New DataTable
            _strPhone.Columns.Add("C1")
            _strPhone.Columns.Add("C2")
            _strPhone.Rows.Add("1", "2")
            _strPhone.Rows.Add("3", "4")
        End Sub
        ' Byref mis à la main !
        Public Sub getPhone(ByRef value As DataTable)
            value = _strPhone
        End Sub
        Public Sub setPhone(ByRef value As DataTable)
            _strPhone = value
        End Sub
    End Class
    Solution cool :
    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
    21
    22
    23
    24
    25
    26
    27
     
    '
    ' test du truc
            Dim cTest2 As New clsTest2
            MsgBox(cTest2.Phone.Columns(0).ColumnName)
    '
    ...
    ' 
    ' Solution cool
    Public Class clsTest2
        Private _strPhone As DataTable
        Public Sub New()
            _strPhone = New DataTable
            _strPhone.Columns.Add("C1")
            _strPhone.Columns.Add("C2")
            _strPhone.Rows.Add("1", "2")
            _strPhone.Rows.Add("3", "4")
        End Sub
        Property Phone() As DataTable
            Get
                Return _strPhone
            End Get
            Set(ByVal value As DataTable)
                _strPhone = value
            End Set
        End Property
    End Class
    Ca semble donc évident que le getbidule et le setmachin sont à proscrire.

    Cdt.
    Bon à savoir : la touche F1 ne sert pas à commander des places pour le grand prix de Belgique.

  4. #4
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 154
    Points : 25 072
    Points
    25 072
    Par défaut
    à priori à la compilation une propriété est décomposée en une fonction get et une sub set donc niveau perf aucune différence

    mais vaut mieux écrire une propriété oui
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  5. #5
    Expert confirmé
    Avatar de Aspic
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2005
    Messages
    3 905
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2005
    Messages : 3 905
    Points : 4 388
    Points
    4 388
    Par défaut
    Citation Envoyé par olsimare Voir le message
    D'autant plus que ce que tu écris n'est correct (une sub as string ??? et qui fait des return ???)
    J'avais meme pas vu l'erreur

    Donc en conclusion on est tous d'accord, les propriétés n'ont pas été inventées pour rien
    Qui ne tente rien n'a rien !
    Ce qui ne nous tue pas nous rends plus fort !!
    Mon projet ZELDA en C++/Allegro
    http://www.tutoworld.com - Le Forum -
    Mes ressources Dotnet (cours, sources, tutos)
    --------------------------------------------
    + + =

    Ne pas oublier le Tag !

  6. #6
    Inactif  
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    497
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 497
    Points : 312
    Points
    312
    Par défaut
    ok, merci tout le monde pour les infos interressantes ...

    ps : Pour l'erreur d'inattention (function/sub), c est corrigé, merci !

  7. #7
    Expert confirmé
    Avatar de Aspic
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2005
    Messages
    3 905
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2005
    Messages : 3 905
    Points : 4 388
    Points
    4 388
    Par défaut
    Citation Envoyé par 19cmos83 Voir le message
    ok, merci tout le monde pour les infos interressantes ...

    ps : Pour l'erreur d'inattention (function/sub), c est corrigé, merci !
    Ca à déjà plus de sens mais encore une fois c'est à proscrire...
    Qui ne tente rien n'a rien !
    Ce qui ne nous tue pas nous rends plus fort !!
    Mon projet ZELDA en C++/Allegro
    http://www.tutoworld.com - Le Forum -
    Mes ressources Dotnet (cours, sources, tutos)
    --------------------------------------------
    + + =

    Ne pas oublier le Tag !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Débutant] difference entre "set "et "get "
    Par annabiste dans le forum Interfaces Graphiques
    Réponses: 2
    Dernier message: 26/10/2009, 20h55
  2. Réponses: 1
    Dernier message: 01/10/2008, 23h26
  3. Réponses: 5
    Dernier message: 18/01/2008, 11h06
  4. [VB6]Property Get/Set avec groupe de contrôles
    Par jacma dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 24/01/2006, 12h09
  5. [vb.net] difference entre Module et Public Module
    Par graphicsxp dans le forum Windows Forms
    Réponses: 4
    Dernier message: 04/01/2006, 17h15

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo