だらだらやるよ。

こげつのIT技術メモ

C#3.0機能紹介その1。暗黙的に型指定されたローカル変数

型を暗黙的に判断してくれる機能。プライベートメソッド内でしか使用できません。

以下のような感じで。
値型、参照型、配列どれでもいけるみたいですね。

//okな例
var i = 1;
>|cs|var str = "string";
var arr1 = new int[] { 1,3 };
var ls = new List<int>();
Console.WriteLine(i);
Console.WriteLine(str.ToUpper());
Console.WriteLine(arr1);
Console.WriteLine(arr2[1]);
Console.WriteLine(ls);
Console.WriteLine(arr3);

型がない変数を作るわけでなく、暗黙的に判断しているので、以下は型がわからないためエラーになる。

//以下はエラー
//var n = null;
//var hoge;
//var arr4 = new[] { new B(),new C() };

ちなみに、以下のようなクラスが定義してある状態で

class A { }
class B :A{ }
class C :A{ }

こんなふうに書いてもエラーになります。
親を自動的に見たりはしてくれないみたい。

var arr4 = new[] { new b(),new c() };

ちゃんと教えてあげればOK

var arr4 = new a[] { new b(),new c() };

また、配列を作成する際も、型の省略ができるようになったので以下のような書き方もできます。

var arr2 = new[]{"st1","st2"};

もちろんこれも同じ。

string[] arr = new[]{"st1","st2"};