7
votes

Pourquoi une variable const est-elle disponible dans une méthode statique?

J'ai écrit du code sans vous rendre compte pourquoi je peux accéder à des valeurs constantes au sein de la statique méthodes. Pourquoi est-il possible d'accéder aux valeurs const sans le déclarer comme statique ? Image_file_extension dans addimageodocument (...) xxx


0 commentaires

3 Réponses :


19
votes

const Les membres sont implicitement statique . Ils appartiennent à la classe plutôt qu'à une instance spécifique. En conséquence, vous ne pouvez pas utiliser this.myConstant mais myClass.myConstant .

citant la spécification C # 3.0 (section §10.4 Constantes):

Même si Constantes sont considérées comme étant considérées statiques membres , a déclaration constante ni n'en oblige pas ni ne permet A modificateur statique . C'est une erreur pour le même modificateur d'apparaître plusieurs fois dans une déclaration constante.


3 commentaires

Il suffit d'ajouter: essayez d'utiliser Static Const et votre compilateur se plaint probablement;)


@Samuel: Oui, Siree ça fait!


Je n'ai jamais pensé à const être implicitement statique ... merci Mehrdad.



1
votes

Je m'attendrais à ce que, puisque une constante ne puisse pas changer d'instance-to-instance, cela les rend sans danger d'une méthode statique.


0 commentaires

2
votes

Pourquoi ne devrait-il pas être possible? Étant donné que la valeur est fixée au moment de la compilation, il n'existe aucune incohérence possible (comme il y aurait avec des variables ou des champs de code> lisonly pouvant être initialisé à différentes valeurs pour différentes instances au moment de l'exécution)


0 commentaires