Unity++blog.

UnityやC#とかについて学習したことを書いてます

varの使い方

コードを書くのを楽にしてくれる便利な「var」!

使うところに一応ルールみたいなものがあるらしいので、ブログに残しておきます。プログラミング初心者でvarをなんとなく使っている人向けの記事です。

 

varというのはC#3.0から使えるようになったもので、型を暗黙的に指定してくれるものです。

 

例えばテキストボックスの中身を取得するのに↓こうしますが、

string a= test1.Textbox.ToString();

 

varが勝手に正しい型を指定してくれるのでこういった書き方ができます。

var a= test1.Textbox.ToString();

 

intやstringだとコードを書く量がほとんど変わらないためメリットが薄いですが、

例えば、下記のようにリストを取得する場合は<>とかついてるし、大文字入ってるし、書くのがめんどくさいです。

List<string> tableList = GetSortedTable(selectedItem);

 

varを使用すると、まぁなんということでしょう!ストレスが1/10くらいになります。

var tableList = GetSortedTable(selectedItem);

 

他にもDictonary<string,int>とか書くのがすごく面倒なのでvarは凄く助かる機能と言えます。

 

しかし上記のコードには問題もあります。それはvarを使用することによって型を省いた為、ぱっと見でtableListがなにを表しているか分かりづらくなることです。table「List」とあるのでListやんけ、となりますが変数名が正しい型を表現しているとは限りませんのでこれはダメです。

 

個人で小さなプロジェクトを作っている時にはこれでもいいかもしれませんが、大規模・複数人で開発するときになると可読性が落ちて、あまり良くないようです。

 

ですのでvarは積極的に使いたいですが、その行を見た時に型がハッキリとわかる時に使うのが正しいみたいです。つまり右辺を見た時に変数の型が明らかな時には積極的にvarを使います。

 

コード量が減るという事以外に、個人的に積極的に使った方がいい理由としては、varを多用した方が読まなければいけない情報が少なくて済み、読み手(自分)に優しいと思うからです。

 

他にも

・厳密な型が重要ではない場合は、varを使う

・foreach文でループ変数の型を決める時にはvarを使う

 

などがルールとしてあるようです。

 

また数値型(int , floatなど)はvarを使用せずに型を明記することが推奨されています。

 

以下例です。

 

これは個人的にはOKだと思います。ToStringで明らかに型がstringと分かるからです。

var a= test1.Textbox.ToString();

 

これはしっかりと型指定してあげないといけないですね!

上のコードはぱっと見で理解できません。

×→var tableList = GetSortedTable(selectedItem);

〇→List<string> tableList = GetSortedTable(selectedItem);

 

foreach文ではvarを使います

〇→foreach (var id in IdList)
{

}

×→foreach (int id in IdList)
{

}

 

右辺で型が明らかな為、varを使います。

〇→var book = new string[x, y];

〇→var list= new List<string>();

上のように、本によるとクラスをnewするときもvarを使ってますね。

 

クラスをnewする時は、Visualstudioでは右側を勝手に書いてくれるので書く量はあまり変わりないんですが、読み手が読みやすいかどうかですね。

×→DataCenter dc = new DataCenter();

〇→var dc = new DataCenter();

 

このvarにも賛否両論あるようですが、公式の推奨する正しい王道をやっていくのがいいと思いますので、正しい使い方を癖付けていきたいですね。