final const readonly
値を書き換えるつもりのない変数を宣言することがある。ローカル変数や関数の引数の場合もあれば、メンバ変数の場合もある。
Javaの場合、このような変数を宣言するときにはfinal
と書いておくと、コンパイル時にチェックできる*1。
C++にもconst
という似たものがある。詳しくは触れないけれど、Javaのfinal
より凝った機能を提供している。
さてC#にもきっとJavaのfinal
に相当するものがあるに違いない、そう思ってconst
と書いてみたのだが、どうもうまくいかない。
調べてみたところ、C#にはconst
のほかにreadonly
があり、求めていたのはこちらだったようだ。ただし、メンバ変数にしか使えない。
const
も値が書き換えられないという点は共通だが、静的に決まる値のみが許されるなど、「定数」としての意味が大きい。
まとめると次のようになる。
final | const | readonly | |
---|---|---|---|
Java | 変数の書き換え禁止 | ||
C++ | 変数の書き換え禁止 オブジェクトへのconst操作以外禁止 |
||
C# | 静的な定数 | メンバ変数の書き換え禁止 |
名前から連想する意味にもっとも近いのはC#のものだと思う。ローカル変数にもreadonly使いたいなぁ。