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

 .NET Discussion :

var maVariable ou int maVariable ? [C#]


Sujet :

.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre actif
    Inscrit en
    Décembre 2010
    Messages
    92
    Détails du profil
    Informations forums :
    Inscription : Décembre 2010
    Messages : 92
    Par défaut var maVariable ou int maVariable ?
    Bonjour à tous,

    simple question, je me demande s'il y a un intérêt à remplacer :

    int maVariable = 6;
    par
    var maVariable = 6;

    J'utilise resharper et ce dernier me conseille de passer int à var car le typage est implicite.

    Il y a un gain en perf ? ou un intérêt quelconque ?

    Merci

  2. #2
    Membre Expert Avatar de Er3van
    Homme Profil pro
    Architecte Logiciel
    Inscrit en
    Avril 2008
    Messages
    1 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Architecte Logiciel
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2008
    Messages : 1 430
    Par défaut
    Au contraire, il faut laisser int, le typage explicite est à utiliser autant que possible. Cela évite à ton compilateur de se poser la question.

    Un petit lien MSDN

  3. #3
    Membre actif
    Inscrit en
    Décembre 2010
    Messages
    92
    Détails du profil
    Informations forums :
    Inscription : Décembre 2010
    Messages : 92
    Par défaut
    Merci beaucoup

  4. #4
    Modérateur

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Avril 2007
    Messages
    1 996
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 996
    Par défaut
    La compilateur va utiliser le type le plus approprié à la compilation. Donc pas de problème de performance à utiliser var.
    Pour la lisibilité, j'ai tendance, comme Er3van à préférer le typage explicite.

  5. #5
    Rédacteur
    Avatar de Nathanael Marchand
    Homme Profil pro
    Expert .Net So@t
    Inscrit en
    Octobre 2008
    Messages
    3 615
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Expert .Net So@t
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2008
    Messages : 3 615
    Par défaut
    Tout se joue à la compilation, un var sera remplacé par le type qui va bien, c'est l'inférence de type. L'executable généré ne differera pas et il n'y aura donc pas de problèmes de performances. Tout est dans le style de codage.
    Personellement, j'ai dorénavant une forte tendance à toujours utiliser le var car d'une part j'estime que le type de variable n'est pas forcément intéressant (si les variables sont correctement choisies, var listOfPerson est un List<Person> et non pas un int) et de plus ca permet un refactoring simple.

    Exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    List<Person> people = Repository.GetPeople();
    Si sur GetPeople je décide dorénavant de retourner un IEnumerable<Person>, je dois tout changer mon code contrairement à ce bout de code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var people = Repository.GetPeople();
    Après, quand on manipule des types anonymes on a plus trop le choix, c'est obligatoire.

  6. #6
    Membre Expert Avatar de Er3van
    Homme Profil pro
    Architecte Logiciel
    Inscrit en
    Avril 2008
    Messages
    1 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Architecte Logiciel
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2008
    Messages : 1 430
    Par défaut
    Ça se défend..
    Mais t'as le problème malgré tout.
    Si tu fais sur ton objet des opérations qui sont propre à son type, par exemple :
    Code c# : Sélectionner tout - Visualiser dans une fenêtre à part
    people.Add(new Person("toto"));
    Avec var, tu n'auras plus l'erreur au niveau de la déclaration de ton objet mais uniquement au moment de l'appel à la méthode. Je ne trouve pas ça "mieux", mais effectivement, chacun son style de codage !

    Après, pour les types anonymes, en effet il n'y a guère le choix.

  7. #7
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Par défaut
    Citation Envoyé par Er3van Voir le message
    Avec var, tu n'auras plus l'erreur au niveau de la déclaration de ton objet mais uniquement au moment de l'appel à la méthode. Je ne trouve pas ça "mieux", mais effectivement, chacun son style de codage !
    Non, puisque l'inference de type faite par la compilateur ne changera rien.
    "var" ça reste quand même du typage statique, inféré certes, mais statique; C# n'est pas JavaScript

  8. #8
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Février 2003
    Messages
    2 209
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2003
    Messages : 2 209
    Par défaut
    Citation Envoyé par Er3van Voir le message
    Au contraire, il faut laisser int, le typage explicite est à utiliser autant que possible. Cela évite à ton compilateur de se poser la question.

    Un petit lien MSDN
    et surtout au developpeur


    ps : Je suis surpris par la proposition de resharper, ca doit etre un cas spécifique (Foreach peut-etre?)

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 27/04/2007, 12h48
  2. Réponses: 2
    Dernier message: 10/04/2007, 13h39
  3. Erreur*: document.getElementById("mavariable") has no properties
    Par camyo dans le forum Général JavaScript
    Réponses: 17
    Dernier message: 09/03/2007, 09h13
  4. delete [] mavariable impossible ?!...... le retour!
    Par Micromalice dans le forum C++
    Réponses: 12
    Dernier message: 07/11/2006, 15h07
  5. <form name=' $mavariable ' > ?
    Par eon-of-the-scorn dans le forum Langage
    Réponses: 3
    Dernier message: 27/07/2006, 11h22

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