Is having public constants "bad"?
<p>Is this:</p>

<pre><code>public MyClass
{
    public const SomeString = "SomeValue";
}
</code></pre>

<p>worse than this:</p>

<pre><code>public MyClass
{
    public static SomeString { get{ return "SomeValue";}}
}
</code></pre>

<p>Both can be referenced the same way:</p>

<pre><code>if (someString == MyClass.SomeString)
     ...
</code></pre>

<p>The second however, has the protection of being a property.  But really how much better is this than a const?  </p>

<p>I have learned over and over the perils of having public fields.  So when I saw some code using these constants on public fields, I immediately set about refactoring them to properties.  But halfway through, I got to wondering what benefit it was to have the static properties over the constants.</p>

<p>Any ideas?</p>
