C#, C♯, C#相談室 Part43
■ このスレッドは過去ログ倉庫に格納されています
0065デフォルトの名無しさん
2007/10/03(水) 22:50:07const int MyIntValue = 1;
foo(MyIntValue);
と書くと、生成されるMSILにはfoo(1);と定数が埋め込まれる
#define MyIntValue 1
みたいな感じ。
MyIntValueの定義場所とfooを呼び出している場所が
別のアセンブリでも、やっぱりコンパイル時に定数が展開される。
問題はMyIntValueを別の値に修正したとき。
MyIntValueがどのアセンブリに定義されていようと
利用場所ではコンパイル時に定数が埋め込まれるから、
結果的にMyIntValueを使ってるプログラムは全部コンパイルし直しになる。
つまりそういうところにconstを使うべきじゃない。
readonlyの場合は、実行時に変数から読み出されるので
利用側の再コンパイルは必要ない。
■ このスレッドは過去ログ倉庫に格納されています