154 votes

const string vs static string en c#

Est l'utilisation de static string mieux que const string en C#

static string _mystr;

vs

const string Mystr;

213voto

SLaks Points 391154

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.

52voto

spinon Points 6362

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.

8voto

Ben Points 6629

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.com

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.

Powered by:

X