「Dictionary が長いから var を使う」は間違いか?
― var の本来の理由と、現場で定着した“正しい使われ方” ―
C# を書いていると、こんなコードに出会います。
Dictionary<string, List<int>> scores = new Dictionary<string, List<int>>();
正しい。
でも、正直こう思ったことはありませんか?
長い……
そこで多くの人が、こう書きます。
var scores = new Dictionary<string, List<int>>();
すると、
「それは本来の var の使い方じゃない」
と言われることがあります。
果たして本当にそうなのでしょうか。
結論から言うと
「Dictionary が長いから var を使う」は、実務的には正しい
ただし、
- それは var が生まれた理由ではない
- でも var が定着した理由ではある
この2つを分けて考える必要があります。
var が生まれた本当の理由
var は C# 3.0(2007年) で登場しました。
このとき同時に入ってきたのが、LINQ と匿名型です。
var result =
from p in products
where p.Price > 100
select new { p.Name, p.Price };
ここで生成されているのは 匿名型。
- 型は存在する
- でも 名前がない
- 人が型名を書くことはできない
つまり、
「長いから」ではなく
「書けないから」
これが var 誕生の理由です。
それでも Dictionary で var が使われる理由
ではなぜ今、こんな場面で var が使われるのでしょう。
var dict = new Dictionary<string, List<int>>();
このとき、
- 右辺に new がある
- 型は一目で分かる
- コンパイル時に型は確定している
つまり 安全性は一切落ちていません。
C# の var は、
- 型を隠すためのものではない
- 動的型にするためのものでもない
👉
「型を書く必要がないときに、書かなくていい」
という仕組みです。
var は「省略」ではなく「別の書き方」
ここが重要です。
Dictionary<string, int> a = new Dictionary<string, int>();
var b = new Dictionary<string, int>();
この2つは、
- 型情報
- 実行結果
- パフォーマンス
すべて同じです。
違うのは 書き方だけ。
なぜ「長い型」を書かなくてよくなったのか
理由はシンプルです。
- IDE が型を表示してくれる
- ジェネリクスで型が長くなった
- ノイズが増えた
結果として、
型を書くメリットより、読みづらさのデメリットが勝った
これが、現場で var が定着した理由です。
使ってよい var / 避けたい var
使ってよい例
var list = new List<int>();
var dict = new Dictionary<string, int>();
var result = products.Where(p => p.Price > 100);
👉 右辺を見れば型が明確
避けたい例(特に初学者)
var x = GetData();
var y = Read();
👉 右辺を見ても型が想像できない
👉 読み手に負担をかける
整理すると
- var の誕生理由→ 書けない型が出てきたから
- var の定着理由→ 長い型を書く意味がなくなったから
この2つは矛盾しません。
授業・学習向け一言まとめ
var は
「楽をするための魔法」ではなく
「書かなくていい場面が増えた結果」
だから、
「Dictionary が長いから var を使う」
という感覚は、
現代 C# ではごく自然な判断です。
おわりに
var を理解するということは、
- C# が静的型言語である理由
- なぜ LINQ が自然に書けるのか
- なぜコードの可読性が変わったのか
を理解することでもあります。
文法ではなく、
歴史と設計思想として見ると、
var はとても筋の通った存在です。





ディスカッション
コメント一覧
まだ、コメントがありません