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 :

Utilité du mot clé params


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2010
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2010
    Messages : 44
    Par défaut Utilité du mot clé params
    Bonjour à tous,

    J'aurai voulu connaitre l'utilité du mot clef params dont voici la page de documentation sur la MSDN.

    http://msdn.microsoft.com/fr-fr/libr...=vs.80%29.aspx

    J'avoue me creuser les méninges pour en trouver une utilité mais je n'en vois aucune.

    Merci

  2. #2
    Membre confirmé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juillet 2006
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Juillet 2006
    Messages : 30
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    public int Add(params int[] ops)
    {
        int result = 0;
     
        for(int i=0; i<ops.Length; i++)
             result += ops[i];
     
        return result;
    }
     
    int r1 = Add(1,2,3,4);
    int r2 = Add(1);
    Un exemple vaut mille mots J'espère

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2010
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2010
    Messages : 44
    Par défaut
    l'équivalent aurait probablement été

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    public int Add(int[] ops)
    {
        int result = 0;
     
        for(int i=0; i<ops.Length; i++)
             result += ops[i];
     
        return result;
    }
     
    int r1 = Add(new int[]{1,2,3,4});
    int r2 = Add(new int[]{1});

    Je suis tout à fait d'accord pour l'utilisation que j'ai bien compris.
    Pourquoi faire compliqué quand le code ci-dessus produit le même résultat ?

    Ce mot clef a quand même une utilité j'ose espérer ??

  4. #4
    Membre confirmé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juillet 2006
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Juillet 2006
    Messages : 30
    Par défaut
    Si params n'existait pas, voici ce que tu aurais à faire:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    string.Format("{0} {1}", new string[] { "Param1", "Param2"});
    au lieu de :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    string.Format("{0} {1}", "Param1" "Param2");
    Son utilité ? Rendre le code plus propre.

  5. #5
    Membre éclairé Avatar de cs_ntd
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Décembre 2006
    Messages
    598
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Etats-Unis

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

    Informations forums :
    Inscription : Décembre 2006
    Messages : 598
    Par défaut
    Tout a fait.

    La plateforme .NET, et plus particulièrement le C# adore () les sucres syntaxiques.

    Dans le meme ordre d'idée, tu pourrais poser les questions :
    - A quoi servent les Propriétés ? (get{}, set{})
    - A quoi servent les Lamdas Expressions ?
    - Yen a surement d'autres...

    Bin la réponse est simple : diminuer le nombre de lignes de code, diminuer la dépendence, faciliter la lecture du code, rendre les choses plus intuitives...

    Donc bien sur qu'on peut faire autrement qu'utiliser "params", bien que ca facilite les choses. De meme qu'on est pas obliger de faire de la prog objet, et ce genre de trucs qui facilite le codage, on se débrouillait très bien avant avec le C

    (Mais meme en C, on avait déjà le droit de préciser des méthodes avec un nombre d'arguments variable... la plus célébre est sans doute 'printf').

  6. #6
    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 cs_ntd Voir le message
    La plateforme .NET, et plus particulièrement le C# adore () les sucres syntaxiques.

    Dans le meme ordre d'idée, tu pourrais poser les questions :
    - A quoi servent les Propriétés ? (get{}, set{})
    Ce n'est pas vraiment ce qui me vient à l'esprit en premier.
    Je dirais même que considérer les propriétés comme un "syntax suger" me parait une vision grossière : leur absence aurait des impacts lourds sur les processus de serialisation/deserialisation (hors sérialisation binaire). En effet, il faudrait les remplacer par des accesseurs (façon java) ou par des membres (violation du principe d'encapsulation et incapacité de valider les valeurs.
    Les accesseurs ne sont que des méthodes et ne peuvent participer au processus de sérialisation; l'affectation de valeurs à des membres ne permet pas d'exécuter d'instructions.

    Donc, les propriétés sont tout sauf un "syntax sugar"

    Le "vrai" "syntax sugar" qui vient à l'esprit en premier, ce sont les méthodes d'extensions.

  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 metalsephiroth Voir le message
    Je suis tout à fait d'accord pour l'utilisation que j'ai bien compris.
    Pourquoi faire compliqué quand le code ci-dessus produit le même résultat ?

    Ce mot clef a quand même une utilité j'ose espérer ??
    J'ai un peu de mal à comprendre ta réponse :

    Qu'est qui est plus compliqué ?

    Ca :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    int r1 = Add(1,2,3,4);
    int r2 = Add(1);
    ou ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    int r1 = Add(new int[]{1,2,3,4});
    int r2 = Add(new int[]{1});
    Que ce soit du point de vue la lisibilité ou de la complication, pour moi, il n'y a pas photo, la première solution l'emporte largement.

    Sans même parler de la "lisibilité sémantique" (désolé pour ce barbarisme) :

    Quand je lis
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    int r2 = Add(new int[]{1})
    Je m'interroge clairement sur la signification de cet appel; alors que :

    ne soulève aucune interrogation sur sa signification.

  8. #8
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2010
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2010
    Messages : 44
    Par défaut
    Très bien je comprends son utilité ainsi.
    Merci pour vos réponses.

    Quand je parlais d'utilité, je pensais que ce mot clé pouvait être une solution élégante pour résoudre différents problèmes algorithmiques.

    Connaissez-vous beaucoup d'autres sucres syntaxiques ?

  9. #9
    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
    Il y'en a plusieurs:
    • les lambda expressions
    • la possibilité de mettre get;set; dans une propriété sans le backing field
    • les méthode d'extension (ce qui ammène LINQ notamment)
    • la possibilité d'initialiser les propriétés lors de l'appel du constructeur

Discussions similaires

  1. Mot clé "register" : utilité ?
    Par Bolde Swoup dans le forum Débuter
    Réponses: 5
    Dernier message: 04/07/2013, 10h03
  2. Quel est l'utilité du mot clé "KEY" tout seul?
    Par takinelinfo dans le forum Requêtes
    Réponses: 3
    Dernier message: 20/07/2011, 14h24
  3. [C#3] - Utilité du mot clé var ?
    Par Aurazed dans le forum C#
    Réponses: 7
    Dernier message: 11/12/2007, 11h32
  4. Utilité du mot-clé "final" ?
    Par vdumont dans le forum C
    Réponses: 12
    Dernier message: 07/09/2006, 18h02
  5. Réponses: 1
    Dernier message: 11/03/2006, 09h55

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