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 :

valeur par défaut des paramètres d'une fonction [Débutant]


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Avril 2008
    Messages
    117
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 117
    Par défaut valeur par défaut des paramètres d'une fonction
    Bonjour,
    Je créé une fonction void qui doit recevoir un tableau de string
    J'appelle ma fonction de la façon suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Ma_Fonction (int intMonNumero = 1, new string[2] { "Code", "Libellé" })
    Ma fonction est définie ainsi:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    static public void Ma_Fonction (int monNumero, string[] monTableau)
    Je voulais savoir s'il était possible d'appeler la fonction ainsi:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Ma_Fonction (int intMonNumero = 1)
    en omettant le 2ème paramètre et indiquer dans la fonction que si le paramètre est omis, c'est par défaut { "Code", "Libellé" } ?

    Avec un string, un int, un bool, j'y arrive, je fais par exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    static public void Ma_Fonction (int monNumero = 1)
    Quand je fais avec le tableau, il met "La valeur de paramètre par défaut pour 'monTableau' doit être une constante au moment de la compilation"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    static public void Ma_Fonction (int monNumero, string[] monTableau = new string [2] {"Code","Libellé"})
    Merci d'avance

  2. #2
    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 dvdavid Voir le message
    J'appelle ma fonction de la façon suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Ma_Fonction (int intMonNumero = 1, new string[2] { "Code", "Libellé" })
    Euh, t'es sûr ? Ca m'étonnerait, vu que cette syntaxe n'est pas légale, ni pour un appel ni pour une déclaration...

    Citation Envoyé par dvdavid Voir le message
    Je voulais savoir s'il était possible d'appeler la fonction ainsi:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Ma_Fonction (int intMonNumero = 1)
    en omettant le 2ème paramètre et indiquer dans la fonction que si le paramètre est omis, c'est par défaut { "Code", "Libellé" } ?
    Bah non, puisque "La valeur de paramètre par défaut pour 'monTableau' doit être une constante au moment de la compilation"... Un tableau ne peut pas être une constante ; seuls les types primitifs (int, bool, double, etc), les string, et les enum peuvent être utilisés comme constantes.

    La solution consiste a créer une surcharge de la méthode, comme on faisait quand il n'y avait pas les paramètres optionnels :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    static public void Ma_Fonction (int monNumero, string[] monTableau)
    {
       ...
    }
     
    static public void Ma_Fonction (int monNumero)
    {
       Ma_Fonction(monNumero, new[]{ "Code", "Libellé" });
    }

  3. #3
    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
    Citation Envoyé par tomlev Voir le message
    La solution consiste a créer une surcharge de la méthode, comme on faisait quand il n'y avait pas les paramètres optionnels :
    HS : Encore faut-il être passé au framework 4 (en C#) pour pouvoir bénéficier de cette fonctionnalité qui est probablement celle présente dans VB.Net qui manque le plus en C#.

  4. #4
    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 calagan99 Voir le message
    HS : Encore faut-il être passé au framework 4 (en C#) pour pouvoir bénéficier de cette fonctionnalité qui est probablement celle présente dans VB.Net qui manque le plus en C#.
    Euh... J'ai pas compris ta remarque ? Les paramètres optionnels existent en C# depuis la v4, et la surcharge de méthode a toujours existé, en VB comme en C#

  5. #5
    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
    Tomlev : l'objet de ma remarque était de dire que les paramètres optionnels ne sont disponibles en C# que depuis la version 4 du framework (alors qu'ils étaient déjà dispo dans la 2.0 pour VB.Net).
    Et malheureusement, j'ai l'impression que pas mal de boîtes n'ont pas migré vers le framework 4.0.
    Cela dit, je précisais que c'était hors-sujet dans la mesure où une simple surcharge faisait le taf.

  6. #6
    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 calagan99 Voir le message
    Et malheureusement, j'ai l'impression que pas mal de boîtes n'ont pas migré vers le framework 4.0.
    J'en sais quelque chose

    Mais de toutes façons il n'est pas nécessaire de migrer pour utiliser C# 4 : on peut très bien faire une solution en .NET 3.5 avec VS2010, et profiter des nouveautés du langage (enfin certaines seulement... par exemple le typage dynamique nécessite .NET 4)

    Par contre, perso je suis pas très fan des paramètres optionnels... ou alors seulement dans les parties privées du code, pas dans l'API publique.

    cf. cette série d'article pour les problèmes que ça peut poser :

    http://blogs.msdn.com/b/ericlippert/...-part-one.aspx
    http://blogs.msdn.com/b/ericlippert/...-part-two.aspx
    http://blogs.msdn.com/b/ericlippert/...art-three.aspx
    http://blogs.msdn.com/b/ericlippert/...part-four.aspx

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 06/08/2013, 08h57
  2. Réponses: 2
    Dernier message: 02/09/2011, 10h29
  3. [EG] Valeur par défaut des paramètres.
    Par la2002 dans le forum Outils BI
    Réponses: 4
    Dernier message: 25/01/2011, 10h42
  4. Valeur par défaut des paramètres d’une méthode
    Par three minute hero dans le forum BOUML
    Réponses: 6
    Dernier message: 29/06/2008, 23h04
  5. Réponses: 6
    Dernier message: 07/08/2007, 21h42

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