2017-04-05 43 views
1

C#有關鍵字var,它強制編譯器推斷變量類型。
c#編譯器還必須檢查變量的類型是否與分配的值兼容。c#關鍵字var慢編譯?

我聽說var可能會減慢編譯速度,我不應該使用它,但我喜歡懶惰,並讓編譯器爲我工作,特別是您必須爲聲明期間爲var聲明的變量賦值。

那麼它會影響大量編譯時間,而使用很多?

+1

你有沒有測得的編譯時間與不經常使用'var'的? –

+0

「我聽說'var'可能會減慢編譯速度,我不應該使用它太多......」你聽到了什麼聲音? –

+0

_「但是,c#編譯器也必須檢查變量類型是否與分配的值兼容。」_不完全。變量的類型是分配值的類型。 –

回答

6

除非你有采取(數十)分鐘打造巨大項目,可以由var引起的任何性能差異將不明顯。

請記住,有或沒有var編譯器已經必須做很多類型兼容性檢查,所以它已經有了「推斷」類型的信息。避免var不會消除此類型檢查。

聽說var可以減緩編譯和,我不應該使用它了...

這聽起來像是有人遞上一個藉口誰在反對使用var


這導致當使用var的問題,意見和喜好上主題不同;也許合法,有(可以說)過度使用的潛力。我個人偏好只有三個相當明確的情況下使用var

  • 時,必須,即匿名類型:var foo = new { Foo = 314 };
  • 當變量類型是(非常)複雜的,往往結果

    • :LINQ查詢
    • 當實際類型是 「完全明顯」 的或var foo = obj as Foo;

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

我喜歡var,但我的老師說在c#中使用bar並不好,如果我使用它,他會給我愛好者的學位,在這個辯論中他說這個論點,所以我不得不要求 –

+0

作爲你的老師關於匿名類型。 –

+0

或動態類型。 –