TheFakeStaticClass.FooConst
静的と宣言されていないのに、静的のように呼び出すことができるのはなぜですか?
constフィールドはコンパイル時に静的フィールドに変換されますか?(を変更できないことを理解しているconst
ので、必要なのは「1つのインスタンス」だけです。以前は多くのconstを使用していましMath.PI
たが、以前は考えたことはありませんでした。今は変更し、今は興味があります。
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;
}
}
}