var表示“變量的類型是在編譯時決定的”,但是dynamic表示“變量的類型是在運(yùn)行時決定的”。因此,dynamic與var具有截然不同的含義。
var讓你在初始化變量時少輸入一些字,編譯器會根據(jù)右值來推斷出變量的類型。dynamic更厲害,它告訴編譯器,根本就別理究竟是啥類型,運(yùn)行時再推斷不遲。
var只能用于局部變量的定義,你不能把類的屬性定義成 var,也不能把方法的返回值類型或者是參數(shù)類型定義成var。dynamic就沒有這些局限了。
dynamic類型并沒有跳過類型校驗,只是延遲到了運(yùn)行時。如果在運(yùn)行時,檢測到類型不兼容,照樣會拋出異常。
你可能在以下情況下使用dynamic:
1.COM對象
2.動態(tài)語言(如IronPython,IronRuby等)對象
3.反射對象
4.C# 4.0中動態(tài)創(chuàng)建的對象