
C#のconstで定数を宣言する方法。static readonlyとの違いとは
プログラミング開発の経験がある方でしたら、定数を活用してコーディングを行ったこともあるでしょう。定数は非常に便利です。C#ではこの定数を宣言するのに用いる命令が「const」です。この記事では、constの簡単な使い方や同じような定数として扱うことが可能なstatic readonlyとの違いについても解説していきます。
- PG
- 定数は便利ですよね。一度宣言してしまえば、インスタンスごとに宣言する必要もありませんし、固定で設定するべき値がある場合には、積極的に活用しています。
- PL
- 定数は上手に活用していきたい命令のひとつです。グローバル領域だけでなく、constの宣言はローカル領域でも行えます。グローバル、ローカルで使い分けて活用していきましょう。
実行環境
・Visual Studio Community 2017
目次
C#で使う定数とは?
定数とは値が固定されていて、変更しないと分かっている文字列や数値などを指します。定数に設定されている値は、アプリケーション実行中に変わることはありません。
この定数を使用する目的には、マジックナンバーや文字列定数入力ミスの削減が挙げられるでしょう。
C#ではconstを宣言して、定数を利用できます。constの特徴として挙げられるのが、固定の値が設定されるため、インスタンスが異なっても常に同じ値となることです。インスタンスごとに値を設定する必要がないので、いわば暗黙的なstaticといえます。
また、コンパイル時に値を埋め込むタイプの定数(コンパイル時定数)ですので、定数の型はコンパイル時に確定できるもの(int, float, double, bool, char, string)でなければなりません。
constの値を変更した場合には、リビルドする必要があります。dllだけを差し替えても反映されません。
constによる定数の宣言方法
それでは早速、constを宣言するプログラミングを行っていきましょう。宣言するだけで定数を利用できるため非常に簡単です。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
using System; using System.Windows.Forms; namespace WindowsFormsApp30 { public partial class Form1 : Form { public const string con_test = "定数テスト"; // 定数宣言const使用 public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { System.Diagnostics.Debug.Print("{0}", con_test); } } } |
実行結果
static readonlyの使い方。constとの違いとは?
C#では定数を利用する際にconstを利用します。ですが、static readonlyという命令が必要な場面もあります。
static readonlyが役立つ場面には、以下の例が挙げられます。
- ・定数値が必要だが、その値の型がconst宣言では使用できない場合
- ・その値をコンパイル時に計算できない場合
constは対象がprivateである場合や、高いパフォーマンスが求められていてかつ変更されることがない場合に多く使用されます。一方で、変更される可能性のある値を定数として宣言する場合には、static readonlyを使用することがおすすめです。
以下、static readonlyの活用方法です。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
using System; using System.Windows.Forms; namespace WindowsFormsApp30 { public partial class Form1 : Form { static readonly int read_test = 1; // 定数宣言readonly使用 public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { System.Diagnostics.Debug.Print("{0}", read_test); } } } |
実行結果
- PG
- 「定数といえばconst」と勝手に決め込んでいました。値が変更される可能性がある場合には、static readonlyを上手に使ってコーディングを進めていきます。
- PL
- もちろん基本はconstを宣言し、定数を利用して大丈夫です!しかし、定数の宣言方法は多く覚えておいて損はないです。static reeadonlyの活用方法もこの機会にしっかりと知識として備えておきましょう。
constとstatic readonlyは使い分けが重要
constはコンパイル時定数の扱いですが、readonlyは実行時定数の扱いとなります。constの方が、実行速度はやや速いですが、インスタンスをnewした結果を割り当てることはできません。それぞれで長所と短所がありますので、そこは開発者が自らの判断でどちらを利用するべきかを決めていく必要があります。柔軟にconstとstatic readonlyを使い分けて、良質なソースコードを作成していきましょう。