可能性のある複製:
ReSharperおよびvar
ReSharperをインストールした後、可能な場合は常にvarを使用することを(警告により)要求します。
UnhandledExceptionEventArgs ue = (UnhandledExceptionEventArgs) t;
ReSharperはそれを変えたい
var ue = (UnhandledExceptionEventArgs) t;
私は最初のバージョンが好きです、varを好む理由はありますか?よりよい性能?何か?それとも単なるコードスタイルですか?
それは本当にコーディングスタイルです。コンパイラーは、両方のバリアントに対してまったく同じものを生成します。
パフォーマンスに関する質問については、こちらもご覧ください。
「警告」と言うとき、正確にはどういう意味ですか?私は通常、あなたがmay varを使用したいというヒントを与えることを見てきましたが、警告ほど厳しいものはありません。
Varとパフォーマンスの違いはありません-コードは同じILにコンパイルされます。潜在的な利点は読みやすさです-変数の型を割り当てのRHSで既に明確にしている場合(たとえば、キャストまたはコンストラクターの呼び出しを介して)、LHSでも変数の利点はどこにありますか?しかし、それは個人的な好みです。
R#でvarの使用を提案したくない場合は、オプションを変更するだけです。 ReSharperについての1つのこと:very設定可能:)
他の人が言ったように、次のいずれかを使用しても、コンパイルされたコード(IL)に違いはありません。
var x1 = new object();
object x2 = new object;
Resharperがあなたに警告するのは、[私の意見では] 2番目の例よりも最初の例を読む方が簡単だからだと思います。また、タイプの名前を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));
この場合では、単なるコーディングスタイルです。
var
の使用は、匿名型を扱う場合にのみ必要です。
他の状況では、それは好みの問題です。