C#では変数を定数として扱うのにconstreadonlyが存在します。

「const」の方が定数としてのイメージはわきやすいですので、通常初心者用基礎本では「const」が使用されているかと思います。
これらの違いを前回から説明しています。


Unity Basic_158

【定数として扱うタイミングの確認】

前回紹介したサンプルプログラムを少し修正して、それぞれが定数として扱われるタイミングを確認してみましょう。
ちなみに、前回紹介したサンプルスクリプトは以下のものです。
Unity Basic_163


【const】

まず、「const」定義の「const_Test」も「readonly」と同様に、宣言時での固定値代入を止めるとどうなるでしょう。
試しに固定値の代入部分を消してみました。

すると、すぐにエラーが出ます。Visual Studio側でエラーと表示されます。

Unity Basic_170
  ↓
Unity Basic_165

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

要は、コンパイルチェック時に定数として扱うため、このタイミングで入力値が指定してないとエラーが出力されます。


【readonly】

では次に、「readonly」で固定値がいつ定数として扱われているか確認してみましょう。
試しに、同じスクリプト内で「readonly_Test」の定義時に constの様に定数を入力してみます。

Unity Basic_171

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

その場合、実行すると何が表示されるのでしょうか。

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



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



Sponsored Link