暗黙的に型指定されたローカル変数を宣言する

完了

C# コンパイラは舞台裏で動作して、コードの記述を支援します。 コンパイラでは、変数の初期化値に基づいて変数のデータ型を推論することができます。 このユニットでは、暗黙的に型指定されたローカル変数と呼ばれるこの機能について説明します。

暗黙的に型指定されたローカル変数とは

暗黙的に型指定されたローカル変数を作成するには、var キーワードに続けて変数の初期化を指定します。 次に例を示します。

var message = "Hello world!";

この例では、string キーワードの代わりに var キーワードを使って文字列変数を作成しました。

var キーワードは、データ型が割り当てられた値によって "暗黙的に" 指定されることを C# コンパイラに伝えます。 型が暗黙的に指定された後、変数は実際のデータ型がその宣言に使われた場合と同じように機能します。 var キーワードは、型が長い場合、または型がコンテキストから明らかな場合に、キーストロークを減らすために使われます。

この例では次のとおりです。

var message = "Hello world!";

変数 message にはすぐに string 型の値 "Hello World!" が設定されるため、C# コンパイラはその目的を認識し、message のすべてのインスタンスを string 型のインスタンスとして扱います。

実際、変数 messagestring 型として指定され、変更することはできません。 次に例を示します。

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 キーワードが表示される可能性があります。ただし、可能な場合はデータ型を使用する必要があります。