2011-11-14 4 views
3

J'ai le code suivant:Comment déclarer une constante en C#/.NET?

public class iSito 
{ 
    public const string myVar = "5262"; 

    public iSito() 
    { 

    } 
} 

Maintenant, si de tout contexte (dans mon cas, un .ascx.cs) je tente d'utiliser iSito.myVar, je ne peux pas obtenir une valeur.

Pourquoi?

+0

Pourriez-vous poster un échantillon du code dans votre fichier .ascx.cs? Aussi, que voulez-vous dire par "je ne peux pas avoir de valeur"? – Justin

+0

Pouvez-vous donner plus d'informations? Avez-vous une erreur de compilation? –

Répondre

6

La classe iSito est-elle dans une autre DLL/assembly? Si oui, avez-vous reconstruire la DLL et avez-vous reconstruire l'application qui consomme la DLL? Une valeur const est écrite en tant que littéral dans la couche d'informations lorsque vous compilez l'application cliente.

Si vous changez le const, vous devrez reconstruire l'application client. Que se passe-t-il si vous changez le const pour être en lecture seule? (Juste à des fins de test).

+0

Était la reconstruction! Merci! :) – markzzz

+0

Lorsque vous déclarez que la variable est en lecture seule, vous n'avez pas besoin de recréer l'application cliente lorsque vous modifiez la valeur de cette variable. –

+2

@markzzz Bon point sur le besoin potentiel d'une reconstruction. Il est souvent conseillé d'utiliser static readonly lorsque la valeur est publique et d'utiliser const uniquement lorsque interne ou privé –

11

Votre exemple est correct et devrait fonctionner - les consts sont automatiquement statiques, vous pouvez donc accéder au champ iSito.myVar - assurez-vous que vous êtes qualifié avec l'espace de noms complet, même que nécessaire pour accéder à la classe (ou ajouter une instruction using appropriée) .

0

iSito.myVar fonctionne. Je l'ai essayé.

+0

Pas très utile, vous pourriez suggérer des raisons possibles pour lesquelles cela pourrait ne pas fonctionner pour OP. (Comme manquant using la directive) –

+0

OK, je voulais juste justifier le fait que cette syntaxe DOIT fonctionner. – kol

+0

-1: Je suis d'accord avec @RuneFS – Fischermaen

Questions connexes