注意:var與dynamic這兩個關鍵字,只是看起來很相 似,僅此而已!
var表示「變數的型別是在編譯時決定的」,但是dynamic表 示「變數的型別是在執行時決定的」。因此,dynamic與var具有截然不同的含義。
var讓 你在初始化變數時少輸入一些字,編譯器會根據右值來推斷出變數的型別。dynamic更厲害,它告訴編譯器,根本就別理究竟是啥型別,執行 時再推斷不遲。
var只能用於區域性變數的定義,你不能把類的屬性定義成var,也不能把方法的返回值型別或者是參 數型別定義成var。dynamic就沒有這些侷限了。
dynamic型別並沒有跳過型別校驗,只是 延遲到了執行時。如果在執行時,檢測到型別不相容,照樣會丟擲異常。
你可能在以下情況下使用dynamic:
1.com物件
2.動態語言(如ironpython,ironruby等)物件
3.反射物件
4.c# 4.0中動態建立的物件
C 4 0中dynamic與var的區別
var表示 變數的型別是在編譯時決定的 但是dynamic表示 變數的型別是在執行時決定的 因此,dynamic與var具有截然不同的含義。var讓你在初始化變數時少輸入一些字,編譯器會根據右值來推斷出變數的型別。dynamic更厲害,它告訴編譯器,根本就別理究竟是啥型別,執行時再推斷不遲。var只...
C 4 0中var和dynamic的區別
1.var表示 變數的型別是在編譯時決定的 var讓你在初始化變數時少輸入一些字,編譯器會根據右值來推斷出變數的型別,var只能用於區域性變數的定義,你不能把類的屬性定義成 var,也不能把方法的返回值型別或者是引數型別定義成var 2.dynamic表示 變數的型別是在執行時決定的 動態語言執行時...
C 4 0跨程式集使用 dynamic
今天寫 時偷懶用了dynamic,結果遇到問題,執行時始終無法獲取dynamic物件的屬性。原問題簡化後如下 程式集a包含sampleclass類,有乙個靜態方法,接收乙個dynamic型別引數並將其value屬性輸出。public class sampleclass 程式集b引用程式集a並呼叫ou...