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 datetime pour une valeur optionnelle


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    1 047
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 047
    Par défaut valeur par défaut datetime pour une valeur optionnelle
    Bonjour,
    dans une fonction j'ai une valeur par défaut (DateTime.MinValue),
    mais pour le date time que me met que je doit mettre une constante. Comment dois je faire?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     static int CréationFichesMPModèle( int numFicheMPPère, int numEquipement = 0, string CodeFicheCréée = "", DateTime DateDéclenchement = DateTime.MinValue)
        {
    merci

  2. #2
    Membre Expert
    Avatar de Pragmateek
    Homme Profil pro
    Formateur expert .Net/C#
    Inscrit en
    Mars 2006
    Messages
    2 635
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Formateur expert .Net/C#
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 635
    Par défaut
    Tu peux utiliser un type nullable et l'opérateur ??.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    static int CréationFichesMPModèle( int numFicheMPPère, int numEquipement = 0, string CodeFicheCréée = "", DateTime? DateDéclenchement = null)
    {
        DateDéclenchement = DateDéclenchement ?? DateTime.MinValue;
     
        // Console.WriteLine(DateDéclenchement.Value);
    C'est ma façon de faire directement inspirée de ce qui se fait en JavaScript (toujours bon de connaître plus d'un langage ).

  3. #3
    Modérateur
    Avatar de sevyc64
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2007
    Messages
    10 251
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 251
    Par défaut
    sinon tu met 0, ça correspond au 30/12/1899 00h00:00

  4. #4
    Membre Expert
    Avatar de Sehnsucht
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2008
    Messages
    847
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Lot et Garonne (Aquitaine)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Octobre 2008
    Messages : 847
    Par défaut
    Citation Envoyé par sevyc64 Voir le message
    sinon tu met 0, ça correspond au 30/12/1899 00h00:00
    Sauf que ça ne fonctionne pas ,
    A value of type 'int' cannot be used as a default parameter because there are no standard conversions to type 'System.DateTime'
    Il aurait été question d'un sujet VB.Net j'aurais dit d'utiliser une date littérale mais là à part là solution de Pragmateek, une chose possible c'est d'avoir 2 signatures (une sans date et une avec) et celle sans date appelle l'autre en passant la date par défaut (ça a l'avantage de ne pas changer la signature de la méthode contrairement à l'utilisation d'un Nullable)

    Edit: après, si on s'en réfère à la doc (chose que j'aurais dû faire avant de poster le premier coup ) comme DateTime est une structure on peut très bien utiliser new DateTime() ou default(DateTime) (ça revient au même dans ce cas) comme valeur par défaut (et dans ce cas la date prise en compte sera le 01/01/0001 00:00:00)
    Ou encore mettre un OptionalAttribute sur l'argument (ie. static int CréationFichesMPModèle(/*args*/, [Optional] DateTime DateDéclenchement), et là plus besoin de spécifier de valeur par défaut (mais derrière ça donne default(Type) comme valeur par défaut de toute façon)

  5. #5
    Membre très actif
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    1 047
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 047
    Par défaut
    Bonjour,
    et merci pour les réponses
    le 0 meme si cela aurait été parfait ne fonctionne pas comme dit plus haut.
    J' ai donc utilisé la méthode de Sehnsucht.
    si je ne fait pas deux signatures c'est surtout que je fais une migration plus ou moins automatique d'un programme de plusieurs dizaines de milliers de lignes de VBA et je ne veux pas trop toucher à ce qui fonctionne avant test.

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 07/10/2010, 20h11
  2. Réponses: 3
    Dernier message: 22/08/2010, 17h40
  3. [JAXB]Comment faire apparaitre dans le xsd une valeur par défaut pour un attribut
    Par Marcos Ickx dans le forum Persistance des données
    Réponses: 0
    Dernier message: 07/01/2010, 18h38
  4. Réponses: 4
    Dernier message: 24/09/2009, 14h43
  5. Réponses: 2
    Dernier message: 22/02/2008, 10h54

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