によって異なります。 Constは変数ではなく、リテラルでなければなりません。あなたが作成したクラスのようなconstに変数を代入しようとしているなら、それを静的な読み取り専用として保持する必要があります。数値や文字列などのリテラルを割り当てることを意味するのであれば、constは問題ありません。
いくつかの例:
public const int Number = 1; // this works; 1 is a literal
public const int Number = SomeClass.SomeProperty; // this does not work
public const int Number = SomeClass.SomeConst; // this works
public const SomeClass Var = new SomeClass(); // does not work
public const string Var = "test"; // this works as "test" is a literal.
あなたがやってのyoureのより良いリテラルを使用していない場合:数値リテラルを使用している場合
public static readonly SomeClass Var = new SomeClass();
別のオプションは、基本的に静的なクラスです列挙型があるが一部の機能が追加されました。
public enum MyConstants
{
VarOne, // defaults to 0
VarTwo, // defaults to next number (1)
VarThree // defaults to next number (2)
}
試しましたか? – Stijn
はい、うまく動作します。 –
'static'と' const'はお互いを除外しません。 'public const'を使うだけで、自動的に静的になります。もちろん、これはプロパティの種類によって異なります。 'const'は、整数や浮動小数点の値や文字列などの時定数をコンパイルすることしかできませんが、構築する必要のあるオブジェクトはコンパイルできません。 –