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 :

Les getter CS


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Mars 2007
    Messages
    167
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 167
    Par défaut Les getter CS
    pourquoi en cs on a
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    	    virtual public int Id
    		{get{return this.fiducial_id;}}
    au lieu d un getter classique ?

  2. #2
    Rédacteur
    Avatar de SaumonAgile
    Homme Profil pro
    Team leader
    Inscrit en
    Avril 2007
    Messages
    4 028
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Team leader
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2007
    Messages : 4 028
    Par défaut
    Qu'est ce que tu appelles un getter classique ?
    Besoin d'un MessageBox amélioré ? InformationBox pour .NET 1.1, 2.0, 3.0, 3.5, 4.0 sous license Apache 2.0.

    Bonnes pratiques pour les accès aux données
    Débogage efficace en .NET
    LINQ to Objects : l'envers du décor

    Mon profil LinkedIn - MCT - MCPD WinForms - MCTS Applications Distribuées - MCTS WCF - MCTS WCF 4.0 - MCTS SQL Server 2008, Database Development - Mon blog - Twitter

  3. #3
    Membre émérite
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    764
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 764
    Par défaut
    parce que écrire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    monObjet.Id = nouvelleValeur;
    recupereValeur = monObjet.Id;
    c'est plus sympa que d'écrire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    monObjet.SetId(nouvelleValeur);
    recupereValeur = monObjet.GetId();

    Il n'y a pas de différence dans le principe... Mais comme les "getter" et "setter", comme tu les appelles, sont des structures classiques qui permettent de gérer l'accès aux données, elles ont été intégrées dans C# de façon à être utilisées plus naturellement.
    C'est quand même plus sympa sous cette forme, non ?

  4. #4
    Membre confirmé
    Inscrit en
    Mars 2007
    Messages
    167
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 167
    Par défaut
    c'est clair que c'est plus sympa, plus leger et plus parlant...
    et est ce aussi plus rapide ou a ce niveau il n'est pas question de grapiller du temps de calcul... je dis ca car la je suis en train d essayer de booster mon code...

  5. #5
    Rédacteur
    Avatar de SaumonAgile
    Homme Profil pro
    Team leader
    Inscrit en
    Avril 2007
    Messages
    4 028
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Team leader
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2007
    Messages : 4 028
    Par défaut
    Citation Envoyé par sayag
    je dis ca car la je suis en train d essayer de booster mon code...
    Ce n'est pas dans cette direction qu'il te faut chercher alors
    Regarde plutot dans les accès aux ressources externes (fichiers, bases de données).
    Besoin d'un MessageBox amélioré ? InformationBox pour .NET 1.1, 2.0, 3.0, 3.5, 4.0 sous license Apache 2.0.

    Bonnes pratiques pour les accès aux données
    Débogage efficace en .NET
    LINQ to Objects : l'envers du décor

    Mon profil LinkedIn - MCT - MCPD WinForms - MCTS Applications Distribuées - MCTS WCF - MCTS WCF 4.0 - MCTS SQL Server 2008, Database Development - Mon blog - Twitter

  6. #6
    Membre émérite
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    764
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 764
    Par défaut
    est ce aussi plus rapide ou a ce niveau il n'est pas question de grapiller du temps de calcul
    A mon avis c'est exactement pareil !
    A l'intérieur d'un get ou d'un set, on peut mettre un certain nombre d'instructions, pour faire un traitement des informations avant de renvoyer la bonne[*]. Le concept de "getter" ou de "setter" a tout simplement été intégrée à la syntaxe du C#, mais elle ne le rend ni plus ni moins efficace.
    Je *crois* même qu'au niveau du code intermédiaire généré lors de la compilation les propriétés sont transformées en méthodes "classiques" GetMachin et SetMachin.

    [*] (il est cependant fortement déconseillé d'y mettre des fonctions lourdes car l'utilisateur de ta classe s'attendra à un accès presque instantané ! pour tout traitement lourd, recourir aux bonnes vieilles méthodes GetLeTrucDifficileACalculer())

  7. #7
    Membre émérite
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    700
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2005
    Messages : 700
    Par défaut
    Non, c'est juste une question de visibilité et de performance de maintenance....

    Ce n'est pas vraiment le langage qui boost le code, mais l'algo : notions très différentes
    Evidemment il est conseillé d'utiliser l'existant :
    la biblio Math,
    savoir utiliser les tableaux, colletions, generics et enumerator au bon moment
    (tit article sympa sur Collection et Enumerator):
    http://www.microsoft.com/france/msdn...llections.mspx

    éviter de bourrer le GC (éviter les new à répétition dans les boucles) très important! le vidage du GC est une opération très lente : dans les applis graphiques c'est le point sensible...
    éviter aussi les calculs à répétition (précalculer au maximum)

    Bien sur, bosser en code unsafe est plus dangereux, mais c'est la que tu gagnera le plus de temps.


    Après ya les pseudo ptits trucs du genre :
    préférer le for au foreach, et préférer le downtozero ( --i) au uptoX (++i)
    (détection de 0 toujours plus rapide : je suis resté longtemps sceptique, car une soustraction est plus longue qu'une addition, mais c'est vrai que la comparaison à zero a chaque cas ce fera plus vite qu'une comparaison entre deux entiers)
    A oui, il parait que ++i est mieux que i++ car il n'affectera pas de variable temporaire pour effectuer l'addition (tu gagnes un cycle^^)

    Enfin, rapelles toi que de toute façon comme tu es en dotNet, ces petits trucs là semble bien ridicule face au boulot de la machine virtuelle


    Enfin, avant de chercher a optimiser le code, optimises d'abord l'algo...

  8. #8
    Membre confirmé
    Inscrit en
    Mars 2007
    Messages
    167
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 167
    Par défaut
    Merci pour les comm, j'essaye de faire le max sur l'algo et ca rentre petit a petit, je me repere meme plutot bien dans mes "raccourcis d algo", je veux dire quand l algo devint tellement lifté que tu le reconnait plus... mais bonje ne suis pas n pro de l algo non plus...

    Regarde plutot dans les accès aux ressources externes (fichiers, bases de données).
    ___________
    Comment vous faites ?


    En tous les cas merci beaucoup pour les conseils, je vais peut etre optimiser ca : http://hybe.fr/developpez/

  9. #9
    Membre confirmé
    Inscrit en
    Mars 2007
    Messages
    167
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 167
    Par défaut
    J'ai essayé de remplir un tableau des elements d une hashTable au lieu de consulter celle ci 100 fois dans mon programme.
    MAis du coup je consulte 100 fois le tableau.
    J y ai juste gagné de ne pas declarer 100 fois un nouvel enumerateur... est mieux ?

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

Discussions similaires

  1. Les Getters et Setters en Java
    Par faressam dans le forum Débuter avec Java
    Réponses: 10
    Dernier message: 18/04/2012, 16h40
  2. [Postsharp] Manager les getter et setter d'une propriété
    Par anthyme dans le forum Framework .NET
    Réponses: 4
    Dernier message: 13/01/2009, 11h19
  3. [DC] Mentionner les getters et les setters
    Par Stouille89 dans le forum Diagrammes de Classes
    Réponses: 2
    Dernier message: 02/11/2007, 15h08
  4. Utiliser les getters & setters en interne ?
    Par Sylver--- dans le forum Langage
    Réponses: 8
    Dernier message: 05/07/2007, 17h00
  5. [Info]générer automatiquement les getters / setters
    Par lr dans le forum Eclipse Java
    Réponses: 2
    Dernier message: 01/02/2005, 10h14

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