2017-04-05 11 views
1

C#にはvarというキーワードがあります。このキーワードは、コンパイラに可変型を推測させます。
c#コンパイラは、変数の型が割り当てられた値と互換性があるかどうかもチェックする必要があります。c#キーワードvarは遅いコンパイルですか?

varは、コンパイルが遅くなる可能性があると聞いていましたが、私はそれをあまり使うべきではないと私は思っています。

多くの場合、それは劇的にコンパイル時間に影響しますか?

+1

はあなたとし、var' 'を頻繁に使用せずにコンパイル時間を測定したことがありますか? –

+0

"varはコンパイルを遅くすることがあり、私はそれをあまり使うべきではないと聞いた..."どこでそれを聞いたのですか? –

+0

_ "また、変数の型が割り当てられた値と互換性があるかどうかをチェックする必要があります。"変数の型は、割り当てられた値の型です。 –

答えて

6

あなたが構築する(数十の)を取る巨大なのプロジェクトを持っている場合を除き、varによって引き起こされる任意のパフォーマンスの違いが目立たないでしょう。

コンパイラまたはvarなしが既には型の互換性チェックの多くを行う必要があることに注意してください、それはすでにタイプを「推測」するための情報を持っています。 varを避けても、この型チェックは行われません。

私はvarは、コンパイルを遅くして、私はあまりそれを使用してはならないことができることを聞いた...

これはvarの使用に反対している誰かによって差し出さ言い訳のように聞こえます。


これはvarを使用する際の問題につながる、との意見や好みはそのトピックに異なります。おそらく合法的に、過度の使用の可能性がある(おそらく)。

  • あなたがしなければならない、すなわち、匿名型:var foo = new { Foo = 314 };
  • 変数の型がある(非常に)複雑で、多くの場合、結果マイ個人好みは3つだけの、かなり明確な状況でvarを使用することです

    • :実際のタイプは "完全に明白" でLINQクエリ
    • のまたはvar foo = obj as Foo;

    • var foo = new Foo();
    • var foo = Foo.Create();
+0

私はvarを愛していますが、私の先生は、バーを使うのはC#でうまくいかないと言っています。私はそれを使っていると私に恋人の恋愛の度合いを与えてくれると言いますが、この議論の中で彼はこの議論をしたので、匿名のタイプについて教師に –

+0

を頼まなければなりませんでした。 –

+0

または動的タイプ。 –

関連する問題