É isto:
public MyClass
{
public const string SomeString = "SomeValue";
}
pior que isso:
public MyClass
{
public static string SomeString { get{ return "SomeValue";}}
}
Ambos podem ser referenciados da mesma maneira:
if (someString == MyClass.SomeString)
...
O segundo, no entanto, tem a proteção de ser uma propriedade. Mas realmente quanto melhor isso é do que uma const?
Aprendi repetidamente os perigos de ter campos públicos. Então, quando vi algum código usando essas constantes em campos públicos, imediatamente comecei a refatorá-las para propriedades. Mas, no meio do caminho, comecei a me perguntar qual era o benefício de ter as propriedades estáticas sobre as constantes.
Alguma ideia?