Serviceを読んで理解し、同意したものとみなします。スタック・オーバーフローはプログラマーとプログラミングに熱心な人のためのQ&Aサイトです。違いと使い分けについて下記の理解をもっています。間違っていたり、アドバイスをいただける点がありましたら、是非お願いします。票7初期化の項はもにょります。Compileが行われます。ソースコード中で値の変わる変数に見えても実質的に値が変わらないようであれば定数としてコンパイルが行われます。readonlyが遅いというわけではありません。ディフォルト値は意図が読み取れませんでした。文字列以外の参照型は使えません。readonlyにはこのような制限はありません。readonlyは実行時に初期化されます。この言葉の意味は、初期化前に参照すると別の値(nullや0)が読み出せます。1;}もし先にAにアクセスするとA2の初期化が行われます。その際、B.B2を参照しますのでそこでBの初期化が行われます。B2の値を決定すべくA.A2を参照しますが未初期化ですのでA.A2は0が読み出されB.B2は1で確定します。Bを先にアクセスすると値は入れ替わります。これらが、初期化の項やディフォルト値に絡んでくるかもしれません。個の銅バッジ初期化って、宣言する再に値を定義する必要があると言いたかったです。|2「注意」の項目が気になったのでそこだけ。別のアセンブリから定数を参照する場合、その値は、呼び出しのアセンブリへコピーされます。呼び出し元のアセンブリにて定数を変更しでも、呼び出し先の定数が更新されます。アセンブリXで定義したconstをアセンブリYで参照するとき、Xでその値を変更すると、Yを再ビルドしないと変更後の値はYに反映されません。Lippertによれば、そもそもそのような状況はあってはならないもので、将来変更され得るような値をconst定義すべきではありません。円周率や金の原子に含まれる陽子の数のような、絶対不変の値のみがconst定義されるべきものである、と。(とはいえ、私としてはデフォルト引数などで使えるようにconst定義が必要な場合もある気はします。|1指摘されていない誤りがあるのでそこだけ。readonlyのデフォルト値にインスタンスが作成されたときに評価されるとありますが、これは型が最初に参照されたタイミングが正しいです。この際コードの上から順にstaticフィールド初期化子(フィールド宣言と同時に値を記述すること=質問の初期化)が評価され、その後staticコンストラクターを実行します。1;}と定義するだけでconstとは異なる結果となります。staticプロパティという組み合わせが自然に感じます。|1他の方も書いていますが、もう少しくだけて説明すると、const変数は自分が作ったアセンブリをクラスライブラリとして配布してしまうと、constの値を変えた場合は、それを使う側のアプリはリビルドしなければ反映されません。dll差し替えだけでは反映されないので注意。onlyはリビルドしなくても反映されます。constは将来絶対に変わることのない値を定義するのに使うのが良いと思います。対してreadonlyは実行速度はconstより遅く、switch文に使えないという主なデメリットがあります。|回答スタック・オーバーフローに参加してくれて、ありがとうございます!質問の回答を共有してください。回答を説明し、自分の検討結果も共有してください。意見を述べること(意見を述べるなら、参照リソース、自分の経験で意見をサポートしてください)さらにサポートが必要な場合このヘルプを参考してください。“回答を投稿”をクリックすることで利用規約、プライバシーポリシー、及びクッキーポリシーに同意したものとみなされます。タグが付いた他の質問を参照するか、自分で質問をする。質問のフィードこのRSSフィードを購読するには、このURLをコピーしてRSSリーダーに貼り付けてください。