mardi 18 mars 2014

Programmation - const vs static readonly

J'ai vu récemment plusieur commentaire sur Internet proposant des utilisation pour les const et le static readonly. J'ai eu l'impression qu'il y avait un manque de compréhension à ce niveau. La différence entre les 2 est pourtant fort simple. Lorsque possible, il faut utiliser le const autant que possible, car il sera optimisé par le compilateur.

public const String MaConstante = "ValeurDeMaConstante";

Pour sa part, les static readonly doit être utilisé dans le cas où la constante nécessite l'appel d'un constructeur par exemple, car le compilateur ne peut pas faire ces appels.



public static readonly Foo MaConstante = new Foo(){ Propriete1 = -1, Propriete2 = "Valeur" };

Il est donc possible d'utiliser les variables static readonly pour définir des objets avec des valeurs par défaut et connues, comme String.Empty et Guid.Empty, en utilisant le contructeur de la classe, et ainsi s'épargner quelques mots de tête.