回答:
const意味しstaticます(const値を参照するためにインスタンスは必要ありません)。
また、この重要なポイントを追加したいと思います。アセンブリをで(参照)にリンクするとpublic const、その値がアセンブリにコピーされます。したがってconst、参照されるアセンブリの値が変更されても、アセンブリには元のコンパイル済みの値が残ります。
この動作が許容できない場合は、フィールドをフィールドにすることを検討する必要がありpublic static readonlyます。
バイナリとして提供されるLib.dll:
public class Foo {
public const int HATS = 42;
public static readonly int GLOVES = 33;
}
App.exe、Lib.dllを参照:
Foo.HATS // This will always be 42 even if the value in Lib.dll changes,
// unless App.exe is recompiled.
Foo.GLOVES // This will always be the same as Foo.GLOVES in Lib.dll
MSDNから:
常に変更することが予想される情報を表す定数を作成しないでください。たとえば、サービスの価格、製品のバージョン番号、または会社のブランド名を格納するために定数フィールドを使用しないでください。これらの値は時間とともに変化する可能性があり、コンパイラーは定数を伝搬するため、ライブラリーでコンパイルされた他のコードは、変更を確認するために再コンパイルする必要があります。
DotNetPerlsから:
DLL。
constフィールドまたは宣言を使用すると、C#コンパイラは実際にconst変数の値をILコードに直接埋め込みます。したがって、本質的にはconstを別のエンティティとして消去します。注意:aに依存するプログラムが値の変更
const後に再コンパイルされないconst場合、[ 以前の値を引き続き使用するため ] 壊れる可能性があります。
定数は、定義により静的です。
定数は、実行時ではなくコンパイル中にコードで置き換えることはできません。そのため、静的定義とインスタンス定義の要件はありません。