在Visual C# 2010中引入了一種新的dynamic類型,該類型是一個靜態的(static)類型,但是一個 dynamic類型的對象會繞過靜態類型檢查。在大多數情況下dynamic和object類型有些相似,但是在編譯時 ,dynamic類型被假定為支持任何操作,也就是說dynamic類型的對象可以是一個Office對象,可以是一個 COM對象或者是DOM對象,而如果在運行時發現該對象不是期望的對象則會拋出一個運行時異常。
由於把一個對象定義為dynamic類型,因此在代碼中編寫任意調用在編譯時都是合法的(這一點在聲明 為object類型時不能成立)。例如以下代碼能夠通過編譯:
運行後發現obj並不支持UpdateWordDocument方法,因此會拋出異常:
大多數動態類型操作的結果仍是動態類型,例如編寫如下代碼時智能提示會顯示變量的類型是dynamic :