C#では変数を定数として扱うのに「const」と「readonly」が存在します。
「const」の方が定数としてのイメージはわきやすいですので、通常初心者用基礎本では「const」が使用されているかと思います。
これらの違いを前回から説明しています。
【定数として扱うタイミングの確認】
前回紹介したサンプルプログラムを少し修正して、それぞれが定数として扱われるタイミングを確認してみましょう。
ちなみに、前回紹介したサンプルスクリプトは以下のものです。

【const】
まず、「const」定義の「const_Test」も「readonly」と同様に、宣言時での固定値代入を止めるとどうなるでしょう。
試しに固定値の代入部分を消してみました。
すると、すぐにエラーが出ます。Visual Studio側でエラーと表示されます。

↓

↓

もちろん Unity側にもエラーとして表示されています。

要は、コンパイルチェック時に定数として扱うため、このタイミングで入力値が指定してないとエラーが出力されます。
【readonly】
では次に、「readonly」で固定値がいつ定数として扱われているか確認してみましょう。
試しに、同じスクリプト内で「readonly_Test」の定義時に constの様に定数を入力してみます。


要は、以下のような形で異なる数字が「readonly_Test」に入力されます。

その場合、実行すると何が表示されるのでしょうか。
これは、これでエラーが出ないと言ことさえ分かっていれば、何が表示されるかは予想が付きますよね。
プログラム実行時(インスタンス作成のコンストラクタ実行時)に入力されている数字が、最終的に入力された値となっています。

「const」と「readonly」を、あまり深く気にすることなく使っている方も多いかもしれませんが、今回それらの動きの再確認ができたかと思います。
Sponsored Link