En utilisant readonly et const

c # constantes de deux manières, à savoir, des constantes de compilation et d'exécution constantes. On peut voir Talia dans le comportement est différent par son nom. Dans le développement de ces deux constantes sélectionnées si elles sont inappropriées, il aura une incidence sur la performance et le programme de développement des programmes. Examinons tout d'abord la définition des constantes et mode de fonctionnement de la compilation constante.

Zéro, défini

constantes d' exécution que nous utilisons en lecture seule à définir, mais nous utilisons des constantes compilateur const pour définir.

// 运行期常量
public static readonly string name = "张三" ;
//编译期常量
public const int age = 20 ;

A constantes d'exécution et les constantes de compilation

  1. constantes de compilation des
    constantes de compilation peuvent rendre le programme tourne beaucoup plus vite, mais il ne fonctionne pas sur la flexibilité constante, nous allons en mettant particulièrement l' accent sur la performance de l' application générale et la valeur de la constante est pas le cas avec la version des modifications changera pour l' utiliser. Cette formulation constante et littérale utilisé directement dans les résultats compilés dans MSIL est le même. Par exemple, if( userAge == age )est équivalent à if( userAge == 20 ).
    Voici quelques - unes note très importante:
  • Les constantes de temps de compilation ne peuvent utiliser entier construit, à virgule flottante, énumérés, à des chaînes nulles ou initialisé et affecté seulement ces types de primitives constantes de compilation seront remplacées lors de la génération de littéraux dans MSIL;
  • Les constantes de temps de compilation peuvent être déclarés à l'intérieur de la méthode;
  • Les constantes de temps de compilation sont constantes statique;
  • Dans un autre appelle les problèmes d'assemblage incompatibilité statique de cause constante (ce problème sera expliqué dans le cas de l'article).
  1. Runtime constante
    dans la plupart des cas , nous utilisons est conçu pour fonctionner sur une constante, cette flexibilité forte constante, peut prendre en charge presque tous les types. Non seulement initialisé directement lorsque l'instruction peut être initialisé dans le constructeur. Runtime constant généré MSIL utilisera cette constante par référence.
    On y trouve aussi quelques points à noter:
  • Les constantes peuvent être utilisés pour exécuter les déclarations de constantes de niveau instance, à la même instance d'un ensemble différent de valeurs de constantes;
  • Exécuter seule constante est analysée lors de l'exécution.

En second lieu, le cas

look Let à un cas:

namespace readonly_and_const
{
    public class main
    {
        public static readonly string name = "张三";
        public const int age = 20;
    }
}

namespace Test
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine(readonly_and_const.main.age);
            Console.WriteLine(readonly_and_const.main.name);
            Console.Read();
        }
    }
}

Le code ci - dessus , nous créons deux ensembles, les références d'assemblage de test assemblage readonly_and_const. Nous avons d' abord regarder le code, regardez les résultats:
Insérer ici l'image Description
Nous allons assemblées readonly_and_const l'âge et le nom peut être modifié et exécuter:

namespace readonly_and_const
{
    public class main
    {
        public static readonly string name = "jack";
        public const int age = 25;
    }
}

Les résultats sont les suivants:
Insérer ici l'image Description
Nous pouvons voir des résultats d'exploitation, la valeur du nom a changé, mais la valeur de l' âge n'a pas changé, parce que lors de la compilation du compilateur de test est écrit directement à l'ensemble 20 de ce littéral, plutôt que de placer cité l'âge de l' espace. Mais le nom à cause de constante en cours d' exécution, et donc d'appliquer au moment de l' exécution placé le nom de cet espace, et donc la sortie de la valeur correcte. Il y a deux façons de résoudre ce problème, on est l'âge modifié pour fonctionner constante, l'autre est de recompiler l' ensemble de test. Quelle méthode devrait être utilisée pour résoudre spécifique, en fonction du programme devrait être.

Astuce: Modifier le niveau d'accès défini lorsque le programme appelant est public const constante doit être recompilé, parce que cette modification est équivalente à modifier l'interface. Mais du public révisé niveau constant équivalent à readonly modifier les détails de la mise en œuvre,

Publié 204 articles originaux · louange 101 won · Vues 350 000 +

Je suppose que tu aimes

Origine blog.csdn.net/gangzhucoll/article/details/104131968
conseillé
Classement