2009-05-09 13 views
37

J'ai ce code;Constantes statiques en C#

using System; 

namespace Rapido 
{ 
    class Constants 
    { 
     public static const string FrameworkName = "Rapido Framework"; 
    } 
} 

Visual Studio me dit: The constant 'Rapido.Constants.FrameworkName' cannot be marked static

Comment puis-je faire cette constante disponible à partir d'autres classes sans avoir à créer une nouvelle instance de celui-ci? (c'est-à-dire y accéder directement via Rapido.Constants.FrameworkName)

Répondre

95
public static class Constants 
{ 
    public const string FrameworkName = "Rapido Framework"; 
} 
+2

Je pense que * ceci * est en fait le bon façon de le faire. – Hemant

+1

C'est! ......... –

+0

Désolé je lisais mal. Mais pourquoi ferais-tu cela? Cette classe ne contiendrait effectivement rien. Et si vous deviez changer cette valeur, vous devrez tout recompiler. Il vaudrait mieux que ce soit un champ statique en lecture seule. –

28

Un const est déjà statique car il ne peut pas changer entre les instances.

+0

droit ... Je ne comprends pas pourquoi le compilateur billons lorsque vous noterons explicitement comme tel ... – Cuga

+0

Je comprends que c'est la façon dont il est mis en œuvre . Je demande pourquoi c'est fait de cette façon. – Cuga

+11

Prenez soin de ne pas confondre const et statique, ils signifient des choses différentes. const fait référence à la valeur d'un élément alors que static fait référence à la façon dont un stockage d'éléments est alloué. Voir http://stackoverflow.com/questions/842609/why-does-c-not-allow-const-and-static-on-the-same-line/842649#842649 –

11

Vous n'avez pas besoin de le déclarer comme statique - une chaîne publique est suffisante.

+3

En fait, c'est une erreur de le déclarer statique, car cela impliquerait que l'allocation de mémoire et l'initialisation de l'exécution doivent avoir lieu, ce qui n'est pas le cas pour une constante. –

-4

vous pouvez également créer constante comme suit:

public static readonly string kCustomTypeUID = @"CustomTypeUID"; 
Questions connexes