const
変数は静的な値です。そのため、クラス内で定数を宣言した場合、暗黙的に静的であるため、定数をstatic
として宣言することはできません。
public class Values
{
public const int CONSTANT_VALUE = 12;
}
静的フィールドへのアクセスと同じ方法で定数へのアクセスが行われます。
int i = Values.CONSTANT_VALUE;
const
の制限は、しかしながら、それは唯一の値型と一緒に使用することができることです。これは、プログラムがコンパイルされるときに、定数が参照されている場所であれば、実際には定数がリテラル値に変換されるからです。プログラムがコンパイルされた後、定数に上記のアクセスは基本的にこれに変換されます:
int i = 12;
今const
フィールドが暗黙的に静的であるという理由だけで、それが唯一の静的クラス内で宣言することができますという意味ではありません。静的クラスは、インスタンスメンバーを含まない特別なクラスです。通常のクラスは、静的メンバとインスタンスメンバの両方を保持できます。
public class Values
{
public const int CONSTANT_VALUE = 12;
public int Val;
}
このクラスは、そのまま使用することができます。
Values v = new Values;
v.Val = Values.CONSTANT_VALUE;
おかげでそんなにそれは私の問題を解決し、私が使用してアクセスしようとしているまま「::」の代わりに「」 – Gavin