【C#】型宣言における"var"宣言について

C#言語はタイプセーフであり、あらゆるデータに「型」が存在し、コンパイル時や実行時にそれがチェックされています。
そのため通常は以下のように変数宣言時に型も併せて宣言することになります。

int i = 5;
double d = 2.5;
string str = "Hello world!";

このように単純な型であれば特に入力していても問題ないのですが、長い名称のクラスインスタンスをコンストラクタから作成する場合にはややもっさりすることがあります。

ThisIsTestClassOfProjectRashInNote instance = new ThisIsTestClassOfProjectRashInNote();

はい、面倒くさい、タイプミスのリスク、文字数が多い、など色々あります。
もちろん、Visual Studioなどの統合開発環境(IDE)を用いていればインテリセンス/オートコンプリートで予測してくれるため実際の入力ミスや手間は軽減できるかと思います。しかし、毎回これを書くか?というところはあります。

また、明確に型名が存在しているものであればいいのですが、匿名クラスといった型名そのものが存在しないものもC#ではありえます。そういった場合、左辺の型宣言はどうすればいいでしょうか?

そこで使用されるのが"var"表記になります。
Javaなどにもありますが、variable type (変数型)として変数宣言の時に使用できます。以下に使用例を示します。

var i = 5; 
var d = 2.5;
var str = "Hello world!";
var instance = new ThisIsTestClassOfProjectRashInNote();

これらはいずれもエラーなく実行できます。
上から順に、整数型、小数点型、文字列型、ThisIsTestClassOfProjectRashInNote型として認識されます。
これは、varで宣言した場合、「型は代入式の右辺の型から推定する」という仕組みが働くためです。
varで宣言した変数は、代入時点で各々の型として解釈されるため、

var item = 5;   ///itemは整数型
item = "Hello!"; ///整数型に文字列は代入できないためエラー

というように途中で型変更をすることはできません。

あくまで、「宣言時に型名を書く」という作業を肩代わりしてくれているだけで、なんでも入れられる型を宣言しているわけではない、ということですね。
なお、推定する都合上、右辺のない

var item;

だけの宣言はできません。
必ず代入式の右辺が必要になります。

以上でvar宣言についての説明を終了します。

この記事が気に入ったらサポートをしてみませんか?