なぜ C# の var は「v a r」なのか
― 型推論の歴史と、あえて“意味を持たせなかった3文字 ―
C# では、次のような書き方ができます。
int x = 10;
var y = 10;
このとき x も y も、どちらも int 型です。
では、なぜ C# には var という書き方が存在するのでしょうか。
そして、なぜ名前が var なのでしょうか。
この記事では、
C# の歴史と設計思想から「v a r」という3文字の意味をひも解いていきます。
var は何の略か?
結論から言います。
var は、何の略でもありません。
- variable の略? → 違います
- variant? → 違います
- dynamic の仲間? → 違います
これは公式にも一貫して説明されています。
var が登場した時代背景
var が導入されたのは C# 3.0(2007年)。
このバージョンは、C# にとって大きな転換点でした。
このとき同時に導入されたもの:
- LINQ
- ラムダ式
- 匿名型
- 拡張メソッド
特に重要なのが LINQ と匿名型 です。
人が「書けない型」が生まれた
LINQ では、次のようなコードが書けます。
var result =
from p in products
where p.Price > 100
select new { p.Name, p.Price };
ここで問題が起きます。
この result の型は何でしょう?
実体は
IEnumerable<匿名型>
ですが、この「匿名型」には 名前がありません。
つまり、
- 型は存在する
- でも 人が書くことはできない
この状況を解決する必要がありました。
「型を書かなくていい」ではなく「型を書けない場面が出てきた」
ここがとても重要なポイントです。
C# の設計者たちは、
- 静的型付けを壊したくなかった
- 実行時に型が変わる言語にはしたくなかった
そこで選ばれたのが、
コンパイル時に、右辺から型を推測する
という仕組みです。
これが 型推論(type inference) です。
なぜ名前を強く主張しなかったのか
もし、この機能に次のような名前を付けたらどうでしょう。
- dynamic
- auto
- infer
- implicit
これらはすべて、
- 型が曖昧になる印象
- 動的型付けの誤解
- 学習者の混乱
を招きます。
C# チームはそれを強く避けました。
そこで選ばれたのが var
var は、
- 短い
- 既存コードと衝突しにくい
- 余計な意味を持たない
という特徴を持っています。
つまり、
「新しい概念名」ではなく
「書き方の選択肢」
であることを、
名前そのものが主張しているのです。
var を使っても、型は消えない
ここは初学者が誤解しやすい点です。
var a = 3; // int
var b = "Hello"; // string
- 型は 必ず存在
- コンパイル時に確定
- 実行時に変わることはない
var は
「型を隠す魔法」ではありません。
歴史から見る var の正体
整理すると、こう言えます。
- var は型推論という仕組みのための“記号”
- 意味を持たせないことで誤解を生まないようにした
- 主役は LINQ、var は裏方
授業・学習向け一言まとめ
var は
「型を書かなくていい」ためのものではなく
「型を書けない時代が来た」ことへの対応。
だからこそ、
あえて意味を持たない v a r という3文字
が選ばれました。
おわりに
var を知ることは、
- C# がなぜ静的型言語であり続けているか
- なぜ LINQ が自然に書けるのか
を理解する近道です。
表面的な文法ではなく、
言語設計の思想として var を見ると、
C# がぐっと分かりやすくなります。




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