C# 入門

ホーム > C# の基礎 > 暗黙的型指定ローカル変数 var

暗黙的型指定ローカル変数 var

スポンサーリンク

C# バージョン 3.0 から "暗黙的型指定ローカル変数" としての var が新しく導入されました。

なぜ var が導入されたかと言うと、特に 匿名型 (Anonymous Types) をサポートすることによって、 コードが簡潔に記述できることや LINQ 等をサポートするのに都合が良いからといえます。

と一言でいっても、なんのことだろうと思う方も多いと思いますので、それぞれ順番にみていきましょう。

暗黙的型指定ローカル変数、var とは?

先に具体的な例をみてみましょう。次のコードをみてください。

using System;
using System.Collections.Generic;

namespace VarTest1
{
	class Program
	{
		static void Main(string[] args)
		{
			int i = 1;
			string s = "Hello, var!";

			Console.WriteLine("{0}", i);
			Console.WriteLine("{0}", s);


			List<string> list = new List<string>(){
				"Hello",
				"Bye"
			};

			foreach (string e in list)
			{
				Console.WriteLine("{0}", e);
			}
		}
	}
}

ローカル変数 i, s, list が定義されていますね?型はそれぞれ int, string, List<string> です。

これは特に何も問題ないと思います。

ここでよく考えると、 i は宣言時に 1 という整数 (int) に、 s"Hello, var!" という文字列 (string) に、liststring のコレクション List<string> で初期化されています。 従って、わざわざ int i = 1 などと int と書かなくとも、 i は宣言時に「整数である」ということはわかるわけです。s, list も同様に右辺から型は明確に分かります。

そこで登場するのが var です。

var を使って上のコードを全く同様の意味に書き換えたのが次のコードです。

using System;
using System.Collections.Generic;

namespace VarTest1
{
	class Program
	{
		static void Main(string[] args)
		{
			var i = 1;
			var s = "Hello, var!";

			Console.WriteLine("{0}", i);
			Console.WriteLine("{0}", s);


			var list = new List<string>(){
				"Hello",
				"Bye"
			};

			foreach (string e in list)
			{
				Console.WriteLine("{0}", e);
			}

		}
	}
}

var を利用すれば、コンパイル時に型がわかる変数については型名を書かなくても良いということになります。

さて、実はこの var、「コードが簡潔に書ける」ということ以上に本質的に必要である場合があります。 そしてそれの方が大事だったりします。

それについては、下記の関連記事を参考にしてください。

スポンサーリンク
ホーム > C# の基礎 > 暗黙的型指定ローカル変数 var