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 :

comment définir des constantes en C#


Sujet :

C#

  1. #1
    Membre habitué
    Inscrit en
    Janvier 2009
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 10
    Par défaut comment définir des constantes en C#
    bonjour,
    je veux définir des constantes qui seront utilisé par toutes les classes d'une DLL en C# ( comme en C++ #define sert à ça)

    Merci d'avance

  2. #2
    Membre confirmé

    Profil pro
    Inscrit en
    Avril 2002
    Messages
    192
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Avril 2002
    Messages : 192
    Par défaut
    Il faut créer une classe static :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    static public MyClass
    {
     static double PI = 3.14;
    }
    Pour y accéder :


  3. #3
    Membre habitué
    Inscrit en
    Janvier 2009
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 10
    Par défaut
    j'ai essayer mais visual ne vois pas les constantes

  4. #4
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 204
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 204
    Par défaut
    ce n'est pas vraiment une constante que PerpetualSnow nous propose, mais ca peut très bien aller aussi


    c'est une variable de classe partagé, à la différence d'une constante elle peut etre modifiée




    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    public static class module
         {
             public const string a = "11";
         }
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  5. #5
    Membre confirmé

    Profil pro
    Inscrit en
    Avril 2002
    Messages
    192
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Avril 2002
    Messages : 192
    Par défaut
    Sorry,

    Ma réponse était imprécise.

  6. #6
    Membre émérite
    Profil pro
    Inscrit en
    Août 2003
    Messages
    835
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2003
    Messages : 835
    Par défaut
    Encore mieux que "const" dans le cas ou ces constantes sont utilisées par d'autres assemblies, c'est "static readonly".

  7. #7
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 204
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 204
    Par défaut
    aucune différence ... une constante est accessible aussi si elle est publique
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  8. #8
    Rédacteur
    Avatar de Greybird
    Inscrit en
    Juin 2002
    Messages
    673
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 673
    Par défaut
    Citation Envoyé par sperot51 Voir le message
    aucune différence ... une constante est accessible aussi si elle est publique
    Malheureusement, il y a bien une différence.

    const et static readonly ne se comportent pas de la même façon.

    avec const, les occurences de la constante sont remplacées à la compilation, avec static readonly, on conserve l'appel du champ.

    Imaginons que tu compiles un assembly A définissant une constante, et un assembly B qui l'utilise. Par la suite, tu modifies la constante dans l'assembly A, et tu ne relivre que A, mais pas B. (typique dans le cas d'une librairie - A - et d'une application l'utilisant - B -)
    Si tu utilises const, B utilisera toujours l'ancienne valeur.
    Si tu utilises static readonly, B utilisera la nouvelle.

    D'où la règle que je m'impose :
    const => private
    tout le reste => static readonly

  9. #9
    Membre émérite
    Profil pro
    Inscrit en
    Août 2003
    Messages
    835
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2003
    Messages : 835
    Par défaut
    Citation Envoyé par Greybird Voir le message
    Malheureusement, il y a bien une différence.

    const et static readonly ne se comportent pas de la même façon.

    avec const, les occurences de la constante sont remplacées à la compilation, avec static readonly, on conserve l'appel du champ.

    Imaginons que tu compiles un assembly A définissant une constante, et un assembly B qui l'utilise. Par la suite, tu modifies la constante dans l'assembly A, et tu ne relivre que A, mais pas B. (typique dans le cas d'une librairie - A - et d'une application l'utilisant - B -)
    Si tu utilises const, B utilisera toujours l'ancienne valeur.
    Si tu utilises static readonly, B utilisera la nouvelle.

    D'où la règle que je m'impose :
    const => private
    tout le reste => static readonly
    Voilà . Désolé j'aurais du être plus précis et donner cette explication.

  10. #10
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 204
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 204
    Par défaut
    intéressant
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  11. #11
    Membre éprouvé
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    201
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 201
    Par défaut
    EDIT
    Ca a juste été mentionné plusieurs fois au dessus...
    Autant pour moi, j'ai juste rapidement parcouru le post

  12. #12
    Rédacteur
    Avatar de Greybird
    Inscrit en
    Juin 2002
    Messages
    673
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 673
    Par défaut
    Citation Envoyé par DarkHerumor Voir le message
    Si ça peut aider?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    static public MyClass
    {
     public static readonly double PI = 3.14;
    }
    Ca a juste été mentionné plusieurs fois au dessus...

Discussions similaires

  1. comment définir des constantes applicatives
    Par paolo2002 dans le forum Struts 2
    Réponses: 2
    Dernier message: 03/04/2008, 10h49
  2. Réponses: 7
    Dernier message: 09/02/2008, 09h49
  3. Définir des constantes CSS
    Par komoku dans le forum Mise en page CSS
    Réponses: 5
    Dernier message: 22/12/2006, 19h58
  4. Réponses: 7
    Dernier message: 24/08/2006, 13h21
  5. Comment définir des raccourcis clavier ?
    Par st0nky dans le forum Composants VCL
    Réponses: 3
    Dernier message: 07/12/2005, 21h37

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