1.var聲明一個局部變量只是一種簡化語法,它要求編譯器根據一個表達式推斷具體的數據類型。
2.var只能用於聲明方法內部的局部變量,而dynamic可用於局部變量,字段,參數。
3.表達式不能轉型為var,但能轉型為dynamic。
4.必須顯式初始化用var聲明的變量,但無需初始化用dynam聲明的變量。
常有人會拿var這個關鍵字來和dynamic做比較。實際上,var和dynamic完全是兩個概念,根本不應該放在一起做 比較。var實際上是編譯期拋給我們的“語法糖”,一旦被編譯,編譯期會自動匹配var 變量的實際類型,並用實際類型來替換該變量的申明,這看上去就好像我們在編碼的時候是用實際類型進行申明的。而dynamic被編譯後,實際是一個 object類型,只不過編譯器會對dynamic類型進行特殊處理,讓它在編譯期間不進行任何的類型檢查,而是將類型檢查放到了運行期。
這從visual studio的編輯器窗口就能看出來。以var聲明的變量,支持“智能感知”,因為visual studion能推斷出var類型的實際類型,而以dynamic聲明的變量卻不支持“智能感知”,因為編譯器對其運行期的類型一無所知。對 dynamic變量使用“智能感知”,會提示“此操作將在運行時解析”
總結:var表示“變量的類型是在編譯時決定的”,但是dynamic表示“變量的類型是在運行時決定的”。因此,dynamic與var具有截然不同的含義。