Parece haber tres opciones para implementar constantes accesibles al público en C#. Tengo curiosidad si hay buenas razones para elegir una sobre la otra o si es solo una cuestión de preferencia personal.Cómo implementar mejor las constantes de acceso público en C#
Opción 1 - ámbito privado más propiedad de captador
private const string _someConstant = "string that will never change";
public string SomeConstant
{
get { return _someConstant; }
}
Opción 2 - propiedad getter única
public string SomeConstant
{
get { return "string that will never change"; }
}
Opción 3 - ámbito público sólo
public const string SomeConstant = "string that will never change";
¿Cuál recomienda y por qué?
actualización
Al parecer, esto se ha convertido en un debate sobre si se debe utilizar o const
static readonly
. No es exactamente lo que pretendía, pero sí me enseñó que la opción 3 es definitivamente una mala idea porque, si el valor de la const cambia en una versión futura, es necesario recompilar todos los ensamblados de referencia.
Sin embargo, no creo que nadie haya discutido realmente la Opción 2 todavía. Sigo teniendo curiosidad si hay alguna desventaja con solo tener un getter que devuelva un valor y nada más.
Si está utilizando Visual Studio, tiene un mecanismo existente que autogenerará propiedades para usted: archivos de recursos. Básicamente, hace la opción 1 automáticamente. También tenga en cuenta que si alguna vez desea admitir varios idiomas, existen mecanismos especiales para eso también. El primero de ellos es que definirías tus constantes en un conjunto de satélites. –