13

重複の可能性:
var キーワードのポイントは何ですか?

私はそれがどのように機能するかを尋ねていません。パフォーマンスに影響するかどうかは尋ねていません。私はすでにそれらの答えを知っています。

そもそも MS C# チームがそれを言語に追加するきっかけとなったものを知りたいです。軽薄なものを言語に追加することはありません。それが解決した注目すべき問題があったに違いありません。その問題は何ですか?

私が見た「解決する問題」に最も近い例は、次のように匿名型を使用する場合です。

var linqResult = from element in SomeCollection s
                 elect new { element.A, element.B } 

この使用法に関する皮肉なことに、スタイルとコーディング標準のガイド (Microsoft によって提供されるものなど) は、結果の型が明らかでない場合は「var」の使用を避けるようコーダーにアドバイスしています。つまり、(おそらく) 'var' の意図された目的は、コーディング標準のガイドラインと矛盾しています。

もし私がコーディング標準を書いていて、'var' の乱用を防ごうとしていたなら、私は「'var' は匿名型に対応する場合にのみ使用してください」と言いたくなるでしょう。しかし、それは疑問を一周させます:言語に「var」を追加した目的は何ですか?

4

4 に答える 4

15

匿名型は大きなものでしたが、メソッド内の繰り返しも減らしました:

Dictionary<MyCustomType, List<MyOtherCustomType>> dict = new Dictionary<MyCustomType, List<MyOtherCustomType>>();
于 2011-02-16T18:35:56.750 に答える
8

まさに!匿名タイプ。var作成された匿名型がなく、それと一緒にインテリセンスが残っている場合、どのようにして作成された匿名型への参照を保持しますか?

言い換えるvarと、 が存在しなかった場合、現在コンパイル時のサポートがある使用可能な意味で匿名型は存在しません。匿名型では実行時エラーが多すぎます。

追加された砂糖(使いすぎると複雑になる) は、匿名でない変数でも var を使用できることです。確かにそれは機能しますが、それは悪い習慣です。

于 2011-02-16T18:34:13.963 に答える
1

私の知る限り、var キーワードは、匿名型の使用を有効にして LINQ を簡単にするために作成されました。

于 2011-02-16T18:34:22.480 に答える
0

MSDNから:

多くの場合、var の使用はオプションであり、構文上の利便性にすぎません。ただし、変数が匿名型で初期化されている場合、後でオブジェクトのプロパティにアクセスする必要がある場合は、変数を var として宣言する必要があります。これは、LINQ クエリ式の一般的なシナリオです。

于 2011-02-16T18:35:04.270 に答える