C 4 0中dynamic與var的區別

2021-05-23 09:38:33 字數 515 閱讀 2117

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這兩個關鍵字,只是看起來很相 似,僅此而已!var表示 變數的型別是在編譯時決定的 但是dynamic表 示 變數的型別是在執行時決定的 因此,dynamic與var具有截然不同的含義。var讓 你在初始化變數時少輸入一些字,編譯器會根據右值來推斷出變數的型別。dynam...

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...