暗黙的に型指定されたローカル変数を宣言する
C# コンパイラは舞台裏で動作して、コードの記述を支援します。 コンパイラでは、変数の初期化値に基づいて変数のデータ型を推論することができます。 このユニットでは、暗黙的に型指定されたローカル変数と呼ばれるこの機能について説明します。
暗黙的に型指定されたローカル変数とは
暗黙的に型指定されたローカル変数を作成するには、var
キーワードに続けて変数の初期化を指定します。 次に例を示します。
var message = "Hello world!";
この例では、string
キーワードの代わりに var
キーワードを使って文字列変数を作成しました。
var
キーワードは、データ型が割り当てられた値によって "暗黙的に" 指定されることを C# コンパイラに伝えます。 型が暗黙的に指定された後、変数は実際のデータ型がその宣言に使われた場合と同じように機能します。 var
キーワードは、型が長い場合、または型がコンテキストから明らかな場合に、キーストロークを減らすために使われます。
この例では次のとおりです。
var message = "Hello world!";
変数 message
にはすぐに string
型の値 "Hello World!"
が設定されるため、C# コンパイラはその目的を認識し、message
のすべてのインスタンスを string
型のインスタンスとして扱います。
実際、変数 message
は string
型として指定され、変更することはできません。 次に例を示します。
var message = "Hello World!";
message = 10.703m;
このコードを実行すると、次のエラー メッセージが表示されます
(2,11): error CS0029: Cannot implicitly convert type 'decimal' to 'string'
Note
その他のプログラミング言語では、var
キーワードの使用方法が異なります。 C# では、ユーザーが実際のデータ型名を使うか、またはコンパイラにデータ型を暗黙的に指定させるかに関係なく、変数にはコンパイラによって静的に型が割り当てられます。 つまり、型は宣言時にロックされるため、別のデータ型の値を保持することはできません。
var
キーワードを使う変数は、初期化する必要があります
var
キーワードは、変数を初期化するために使用した値に依存することを理解しておくことが重要です。 変数を初期化せずに var
キーワードの使用を試みた場合、コードをコンパイルしようとするとエラーが発生します。
var message;
このコードを実行しようとすると、コンパイル時に次の出力が表示されます。
(1,5): error CS0818: Implicitly-typed variables must be initialized
var
キーワードを使用する理由
var
キーワードは、C# コミュニティで広く採用されています。 書籍やオンラインのコード例を見ると、実際のデータ型名ではなく var
キーワードが使われていることがよくあるので、その使用方法を理解することが重要です。
C# の var
キーワードには、重要な用途があります。 多くの場合、変数の型はその初期化から明らかです。 そのような場合は、var
キーワードを使う方が簡単です。 var
キーワードは、アプリケーションのコードを計画するときも役に立ちます。 タスクのコード開発を始める時点では、使用するデータ型がすぐにわからないことがあります。 var
を使うと、ソリューションをより動的に開発するのに役立ちます。
初心者には、コードの作業に慣れるまで、変数を宣言するときに、実際のデータ型名を使い続けることをお勧めします。 変数を宣言するときにデータ型を使用すると、コードを記述するときに目的を持てるようになります。
要点
これまでに var
キーワードについて学習した内容を次に示します。
var
キーワードによって、コンパイラは、初期化される値に基づいて変数のデータ型を推論するように指示されます。- 他のユーザーのコードを読むときに
var
キーワードが表示される可能性があります。ただし、可能な場合はデータ型を使用する必要があります。