http://blogs.wankuma.com/rti/archive/2007/12/26/114624.aspx
C# 3.0 の暗黙型付け「var」の使いどころが議論になっている。「この手の議論は後 5 年は終わらないかも?」と思うぐらい意見が分かれてる。
「var を使わなければしょうがない箇所(匿名型を使う箇所)は使えば良い」という意見は全員一致で合意だとして、「今まで var を使う必要がなかった箇所に var を使うかどうか」というのが激論の的だ。「今まで var を使う必要がなかった箇所に var を使うべきではない」が大勢のようだ。ぶっちゃけると、私はどっちでも良いんじゃない? と思っているが、それでは卑怯なので、「今まで var を使う必要がなかった箇所にも var を積極的に使うべき」という立ち位置になる。
var 反対派の「型を明示する事が大事だよ」という意見は理解しがたい。var は宣言と同時に初期化する必要があるのだから型は十分に明示している。
「var は型を明示している」。これが大事だ。
「型推論」という用語が混乱させるのかもしれないが、推論はコンパイラにとってそうであって、人間にとっては推論でも何でもない。コードを書いた時点で型ははっきり分かっている。
「型推論とは、人間には明らかに分かる型に対して、いちいち型名を明示しない事」
そういう意味では
http://www.ailight.jp/blog/kazuk/archive/2007/12/26/14345.aspx
varとは「仕様」でなく「真理」に基づいたコードを記述する為の手段であり、型という「仕様」の決定をコンパイル時まで遅延させるという目的に対して使われるべきものです。
は若干ズレているのではないかと思う。型の決定は「コードを書いた時点」で行われているべきだ。人間にはそれが分かっている。コンパイラはそれを推論するだけ。それが var だ。
for(var i = 0; i < 10; i++)
上記コードで、var 反対派は「var と書く必要がないから int と明示すれば良い」と言っているが、「どう見ても i は int 型なんだから、いちいち型名を書く必要がない」が型推論だ。
もう一度言おう。型を推論するのは人間ではなくコンパイラだ。var を積極的に使うのは、いちいち型名を明示しなくても人間には型が明らかだからだ。
しかし、人間にも型を推論させる箇所に var を使うのはバグの元とだけは言っておこう(ソレは何処なんじゃい!ってのが議論の中心だと思うけど)。