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

C# Discussion :

C# 3 et lazy loading


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    58
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 58
    Par défaut C# 3 et lazy loading
    Bonjour ,

    Petite question sur les accesseurs en C# 3 et le lazy loading.
    Quand j'écris en C# 3:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    public MonObjet MyProperty
            {
                get;
                set;
            }
    Ça me permet d'accéder à la propriété quand bon me semble.
    Par contre, comment cela fonctionne-t-il pour le lazy loading?
    En gros, comment écrit-on (C# 2):
    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
     
    private MonObjet _myProperty;
     
    public MonObjet MyProperty
            {
                get
                {
                    if (_myProperty == null) 
                    {
                        _myProperty = new MyObject();
                    }
     
                    return _myProperty;
                }
                set 
                {
                    _myProperty = value;
                }        
            }
    en C# 3?

    Merci pour vos réponses

  2. #2
    Membre expérimenté
    Avatar de StormimOn
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2005
    Messages
    2 593
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2005
    Messages : 2 593
    Par défaut
    Tu l'écris comme en C# 2.0.

    Les propriétés automatiques sont limitées. Dès que tu dois mettre du code dans le get et/ou le set, il faut coder l'ensemble de manière explicite.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    58
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 58
    Par défaut
    erf ,

    et peux-tu (ou quelqu'un d'autre ) me confirmer que ceci est correct en C# 4?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    public MonObjet MyProperty
    {
        get?? { new MonObjet(); }
    }
    Si oui, cela signifie que pour utiliser les propriétés automatiques ET le lazy loading, il faut coder en C# 4.

    Merci!

  4. #4
    Membre éprouvé

    Profil pro
    Inscrit en
    Juin 2008
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 92
    Par défaut
    T'as toujours ça qui n'est pas beaucoup plus compliqué :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    private Object myProperty;
    public Object MyProperty { get { return myProperty ?? new Object(); } }
    Sinon, pour savoir si une syntaxe est correcte en C#4, tu peux toujours télécharger Visual Studio 2010 Beta.

  5. #5
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Citation Envoyé par jomree Voir le message
    et peux-tu (ou quelqu'un d'autre ) me confirmer que ceci est correct en C# 4?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    public MonObjet MyProperty
    {
        get?? { new MonObjet(); }
    }
    Non, cette syntaxe n'existe pas... tu l'as "inventé" ou tu l'as vu quelque part ?

    Citation Envoyé par Idrakis Voir le message
    T'as toujours ça qui n'est pas beaucoup plus compliqué :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    private Object myProperty;
    public Object MyProperty { get { return myProperty ?? new Object(); } }
    Euh... ce code va créer une nouvelle instance à chaque fois, vu que le champ myProperty n'est jamais affecté
    Si tu tiens à le faire en une seule instruction, tu peux faire ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
            private object myProperty;
            public object MyProperty { get { return (myProperty = myProperty ?? new object()); } }
    (en utilisant le fait que le "résultat" d'une affectation est la valeur affectée)

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

    Informations forums :
    Inscription : Mai 2007
    Messages : 58
    Par défaut
    Citation Envoyé par Idrakis Voir le message
    T'as toujours ça qui n'est pas beaucoup plus compliqué :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    private Object myProperty;
    public Object MyProperty { get { return myProperty ?? new Object(); } }
    Mouai, sauf que le but pour moi, c'était d'utiliser les propriétés automatiques.

    Citation Envoyé par tomlev Voir le message
    Non, cette syntaxe n'existe pas... tu l'as "inventé" ou tu l'as vu quelque part ?
    Ben je l'ai vu quelque part, mais là où je l'ai vu, le bonhomme qui l'a écrit a du l'inventer (http://devlicio.us/blogs/jim_bolla/a...-operator.aspx) en disant que ça serait bien qu'une telle syntaxe existe. Sur le coup, j'avais compris que cette syntaxe serait disponible en C# 4 (mauvaise traduction )

Discussions similaires

  1. spring2 hibernate3 : lazy loading
    Par fxonline dans le forum Hibernate
    Réponses: 9
    Dernier message: 10/02/2007, 18h56
  2. Lazy loading sur component
    Par El Saigneur dans le forum Hibernate
    Réponses: 2
    Dernier message: 03/11/2006, 10h30
  3. Lazy loading et fermeture de session hibernate
    Par BRAUKRIS dans le forum Hibernate
    Réponses: 3
    Dernier message: 20/07/2006, 13h08
  4. [hibernate] problème pour desactiver le lazy loading
    Par agougeon dans le forum Hibernate
    Réponses: 2
    Dernier message: 14/03/2006, 11h20
  5. [HIBERNATE 3]Lazy loading
    Par SEMPERE Benjamin dans le forum Hibernate
    Réponses: 11
    Dernier message: 08/02/2006, 22h40

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