Est l'utilisation de static string mieux que const string en C#
static string _mystr;
vs
const string Mystr;
Est l'utilisation de static string mieux que const string en C#
static string _mystr;
vs
const string Mystr;
Lorsque vous utilisez un const
chaîne de caractères, le compilateur incorpore la valeur de la chaîne au moment de la compilation.
Par conséquent, si vous utilisez un const
de la valeur dans une autre assemblée, puis mise à jour de l'original de l'assemblée et le changement de la valeur, de l'autre assemblée de ne pas voir le changement jusqu'à ce que vous re-compiler .
Un static readonly
chaîne de caractères est un champ normal qui obtient leva les yeux au moment de l'exécution. Par conséquent, si la valeur du champ est modifié dans une autre assemblée, les modifications seront considérées comme dès que l'assemblée est chargée, sans recompilation.
Cela signifie également qu'un static readonly
chaîne de caractères peut utiliser non-constante de ses membres, comme Environment.UserName
ou DateTime.Now.ToString()
. Un const
chaîne de caractères ne peut être initialisé à l'aide d'autres constantes ou des littéraux.
Aussi, un static readonly
chaîne de caractères peut être définie dans un constructeur statique; un const
chaîne de caractères ne peut être initialisé en ligne.
Notez qu'un static string
peut être modifié; vous devez utiliser static readonly
à la place.
Voici une bonne répartition des avantages et des inconvénients:
Ainsi, il apparaît que les constantes doivent être utilisés lorsqu'il est très peu probable que la valeur ne changera jamais, ou si aucune externes apps/libs sera l'aide de la constante. Static readonly champs doivent être utilisés lors de l'exécution de calcul de temps est nécessaire, ou si externe, les consommateurs sont un facteur.
OQ a demandé à propos de static string
vs const
. Les deux ont des différents cas d'utilisation (bien que les deux sont traités comme statique).
Utiliser const seulement pour vraiment les valeurs des constantes (par exemple, la vitesse de la lumière - mais même cela varie selon le milieu). La raison de cette ligne directrice stricte, c'est que la const valeur est substitué dans les usages de la const dans les assemblys de référence, ce qui signifie que vous pouvez avoir des problèmes de version doit const changement de son lieu de définition (c'est à dire qu'il ne devrait pas avoir été une constante, après tout). Remarque cette même affecte private const
champs, car vous pourriez avoir de la base et la sous-classe dans les différentes assemblées et des champs privés sont héritées.
Les champs statiques sont liés au type qu'elles sont déclarées à l'intérieur. Ils sont utilisés pour représenter les valeurs que doit être la même pour toutes les instances d'un type donné. Ces champs peuvent être écrites à autant de fois que vous le souhaitez (à moins que spécifié en lecture seule).
Si vous signifiait static readonly
vs const
, alors je vous recommande static readonly
pour presque tous les cas, car il est plus dans l'avenir.
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.