C#允許您使用var
來指定該類型的評估方式不是明確說明它。這是相當方便的代碼,用於看起來像這樣:
Type<string,int,int,int,int> xyzzy = new Type<string,int,int,int,int>();
現在可以改爲做:
var xyzzy = new Type<string,int,int,int,int>();
然而,變量本身是仍然靜態類型,因此類型必須在創建變量的位置可用,以便編譯器可以知道如何處理它。
線索就在你看到錯誤消息:
Implicitly-typed local variables must be initialized
請注意,這是隱式類型的而不是類型化。
因此,這些:
int x; // explicit int.
var x = 7; // implicit int because we're using int to set it.
var x; // no idea what type this should be.
前兩個是可以的,因爲該類型的信息是可用的。第三個是而不是沒關係,因爲關於您想要的類型的信息不可用。
對比度使用var
與dynamic
- 後者在Javascript中更密切相關,var
,它的動態類型(一)和搞清楚什麼可以做它被推遲到運行時。
(一)從技術上講,我認爲這是still considered a static type但常規的類型檢查是在編譯時繞過。
也見[有沒有什麼辦法在C#中創建隱式類型的全局變量?](http://stackoverflow.com/q/29130382/3899260) – discussedtree 2015-03-19 05:35:49
檢出http://stackoverflow.com/questions/961581/whats-the-difference-between-dynamicc-4-and-var - 你對C#中的'var'有一些嚴重的誤解(它與JavaScript中的'var'非常不同)。 – 2015-03-19 05:41:06
在C#中的東西變量有JavaScript不是類型。所有變量都需要靜態類型語言的類型,C#是一個。 – 2015-03-19 05:43:06