当它没有被声明为静态时,为什么我可以调用TheFakeStaticClass.FooConst
它,就像它是静态的一样?
const 字段是否在编译时转换为静态字段?(我知道您不能更改 a const
,因此您只需要“一个实例”。我之前使用过很多 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;
}
}
}