プログラミング.NET FRAMEWORK 第3版 (マイクロソフト公式解説書)
- 作者: Jeffrey Richter,藤原雄介
- 出版社/メーカー: 日経BP社
- 発売日: 2011/02/03
- メディア: 単行本
- 購入: 10人 クリック: 500回
- この商品を含むブログ (20件) を見る
具体的には厳密名がついていないアセンブリの場合、constはコンパイル時に畳み込まれてしまうため、constを定義していないdllがなくても動いてしまいます*1。
したがって、こんな状況でよろしくない。
- ソリューションAにあるクラスA1でpublic const int hoge = 5とか定義されている
- ソリューションBにあるクラスB1でクラスA1のhogeを参照する。
- ソリューションA側のhogeの定数を変えても、普通にVSで生成しているだけでは、クラスB1側ではクラスA1の変更がわからない(なくても動いてしまう)ので、誤った動作をしてしまう…と。
一つのソリューションだけでやっていた場合、Visual Studioがソースコードの変更をちゃんと検知して、関連ビルドしてくれる(はず)ので、問題ないでしょうけど、気を付けたいですね。こういうときはreadonlyを使いましょうということが書かれています。
C#でのコンストラクターでの挙動はC++と異なるので、気を付けたいところですね。ええ、構造体のコンストラクター書くときによくC#コンパイラに怒られてます…。