なぜ C# の var は「v a r」なのか

2026年2月9日

― 型推論の歴史と、あえて“意味を持たせなかった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# がぐっと分かりやすくなります。


訪問数 12 回, 今日の訪問数 1回

C#

Posted by hidepon