web-dev-qa-db-fra.com

Différence entre les variables statiques et const

quelle est la différence entre "statique" et "const" lorsqu'il s'agit de déclarer des variables globales;

namespace General
{
    public static class Globals
    {
        public const double GMinimum = 1e-1;

        public const double GMaximum = 1e+1;
    }
}

lequel est le meilleur (étant donné que ces variables ne changeront jamais)

namespace General
{
    public static class Globals
    {
        public static double GMinimum1 = 1e-1;

        public static double GMaximum1 = 1e+1;
    }
}
10
Ibrahim Ozdemir

const et exécutent en lecture seule une fonction similaire sur les membres de données, mais ils présentent quelques différences importantes. Un membre constant est défini au moment de la compilation et ne peut pas être modifié au moment de l'exécution. Les constantes sont déclarées sous forme de champ, à l'aide du mot clé const et doivent être initialisées au fur et à mesure qu'elles sont déclarées.

Le modificateur statique est utilisé pour déclarer un membre statique, cela signifie que le membre n'est plus lié à un objet spécifique. La valeur appartient à la classe, en outre le membre est accessible sans créer d'instance de la classe. Il n'existe qu'une seule copie des champs et événements statiques, et les méthodes et propriétés statiques ne peuvent accéder qu'aux champs statiques et aux événements statiques

11
MrMins

const les variables ne peuvent plus être modifiées après la compilation. Ils sont bons pour les choses qui sont vraiment constantes (c'est-à-dire pi)

static membres sont de la mémoire partagée accessible par toutes les instances d'une classe particulière et plus encore si des modificateurs d'accès comme public sont utilisés (ceux-ci peuvent ressembler à des variables globales dans des langages comme javascript). Les membres statiques se comportent comme des variables normales qui peuvent être réaffectées à tout moment.

Dans votre cas, si les chiffres sont garantis de ne jamais changer, faites-les const. S'ils changent, vous devrez recompiler le programme avec une nouvelle valeur.


Quel est le meilleur? si vous utilisez const, les valeurs littérales sont intégrées dans l'assembly et améliorent les performances.

Si jamais les valeurs doivent changer, le temps nécessaire pour changer la source et recompiler ruine rapidement cette augmentation marginale des performances.

8
t3dodson

const est une valeur constante et ne peut pas être modifiée. Il est compilé dans l'Assemblée.

static signifie qu'il s'agit d'une valeur non liée à une instance, et qu'elle peut être modifiée au moment de l'exécution (car ce n'est pas readonly).

Donc, si les valeurs ne sont jamais modifiées, utilisez consts.

3
Maarten