Are const fields converted to static fields at compile time?
<p>Why can I call <code>TheFakeStaticClass.FooConst</code> , like it's static, when it's not declared static?</p>

<p>Are const fields converted to static fields at compile time? (I understand that you can't change a <code>const</code> and hence you only need "one instance". I've  used many const's before like <code>Math.PI</code> but never thought about before, and now I do and now I am curious.</p>

<pre><code>namespace ConstTest
{
    class Program
    {
        class TheFakeStaticClass
        {
            public const string FooConst = "IAmAConst";
        }

        class TheRealStaticClass
        {
            public static string FooStatic = "IAmStatic";
        }

        static void Main()
        {
            var fc = TheFakeStaticClass.FooConst; // No error at compile time!
            var fs = TheRealStaticClass.FooStatic;
            var p = new Program();
            p.TestInANoneStaticMethod();
        }

        private void TestInANoneStaticMethod()
        {
            var fc = TheFakeStaticClass.FooConst;
            var fs = TheRealStaticClass.FooStatic;
        }
    }
}
</code></pre>
