constとreadonly

Javaのfinalは意味がたくさんあるけど、その中で定数性を表すfinalに相当するのがこのconstとreadonly.

C#のconstはかなり潔癖で、変数が少しでも絡むとコンパイルエラーとなる。

// エラー
int n = 10;
const int i = n == 0 ? 1 : 2;

だけど、readonlyを使えばいいのか、というとそういうわけにもいかない。
readonlyはフィールドにしか使えないため、

// エラー
int n = 10;
readonly int i = n == 0 ? 1 : 2;

これもエラーとなってしまう。


メソッド内で定数性を表すような方法はないのだろうか・・・
プログラマが気をつけろ、ってことなのかな。