170

重複の可能性:
ReSharper と var

ReSharper をインストールした後、(警告により) 可能な限り var を使用するように要求されます。たとえば、

UnhandledExceptionEventArgs ue = (UnhandledExceptionEventArgs) t;

ReSharper はそれを

var ue = (UnhandledExceptionEventArgs) t;

最初のバージョンの方が好きですが、varを好む理由はありますか? よりよい性能?なんでも?それとも単なるコードスタイルですか?

4

4 に答える 4

115

それは本当に単なるコーディングスタイルです。コンパイラは、両方のバリアントに対してまったく同じものを生成します。

パフォーマンスの質問については、こちらも参照してください。

于 2011-02-01T22:06:18.820 に答える
38

「警告による」と言うとき、正確には何を意味しますか? 私は通常、 var を使用したいかもしれないというヒントを与えるのを見てきましたが、警告ほど厳しいものはありません。

var とのパフォーマンスの違いはありません。コードは同じ IL にコンパイルされます。潜在的な利点は読みやすさにあります-割り当てのRHSで変数の型をすでに明確にしている場合(たとえば、キャストまたはコンストラクター呼び出しを介して)、LHSにもそれを含めることの利点はどこにありますか? 個人的な好みですが。

R# が var の使用を提案したくない場合は、オプションを変更するだけです。ReSharper についての 1 つのこと:非常に構成可能です :)

于 2011-02-01T22:07:21.857 に答える
18

他の人が言ったように、次のいずれかを使用する場合、コンパイルされたコード (IL) に違いはありません。

var x1 = new object();
object x2 = new object;

[私の意見では] 2 番目の例よりも最初の例の方が読みやすいため、Resharper が警告していると思います。その上、型の名前を 2 回繰り返す必要があるのは何ですか?

次のことを考えてみてください。

KeyValuePair<string, KeyValuePair<string, int>> y1 = new KeyValuePair<string, KeyValuePair<string, int>>("key", new KeyValuePair<string, int>("subkey", 5));

代わりにこれを読む方がずっと簡単です:

var y2 = new KeyValuePair<string, KeyValuePair<string, int>>("key", new KeyValuePair<string, int>("subkey", 5));
于 2011-02-01T22:15:57.343 に答える
14

この場合、それは単なるコーディング スタイルです。

の使用はvar、匿名型を扱う場合にのみ必要です。
他の状況では、それは好みの問題です。

于 2011-02-01T22:15:00.973 に答える