2010-09-03 89 views
5

var關鍵字在運行時或編譯時獲取類型?var關鍵字運行時或編譯時間?

還是取決於?

+0

這已經在其他問題上進行了討論,包括[C#'var'vs特定類型性能](http://stackoverflow.com/questions/356846/c-var-vs-specific-type-performance)和[ 動態(C#4)和var之間有什麼區別? (http://stackoverflow.com/questions/961581/whats-the-difference-between-dynamicc-4-and-var)。 – 2010-09-03 03:57:51

+3

它不會顯示在建議傢伙。爲此實現更好的算法。我不會說話。 – DarthVader 2010-09-03 04:00:37

+0

而我不是SO開發者,加上我沒有投票結束。我添加了鏈接,以便人們可以去那裏獲取更多信息。 – 2010-09-03 04:05:41

回答

15

簡單明瞭:編譯時間

var不是一個類型。實際類型是在編譯時計算出來的。

var變量也被稱爲Implicitly Typed Local Variables (C# Programming Guide)

+0

我一直在試圖想出一個類型不會被知道直到運行時,這是可能的嗎? – DarthVader 2010-09-03 03:52:36

+0

@user,no。如果編譯器無法確定類型,編譯將失敗。 – 2010-09-03 03:58:39

+2

您應該在C#4.0中檢查新的'dynamic'關鍵字。 http://msdn.microsoft.com/en-us/library/dd264736.aspx – 2010-09-03 03:58:48

4

變種類型得到的compile time

變種是一個隱式類型的局部變量是強類型的,就好像你已經自己聲明的類型,但是編譯器決定爲

var i = 10; // implicitly typed 
int i = 10; //explicitly typed 

http://msdn.microsoft.com/en-us/library/bb383973.aspx

+0

如果你打算從MSDN頁面添加引號,你可以鏈接到它。 – 2010-09-03 03:52:26

1

var keyword被隱式類型。這意味着它是強類型的,但編譯器確定類型。