C 4 0中var和dynamic的區別

2022-01-18 12:45:30 字數 524 閱讀 6024

1. var表示「變數的型別是在編譯時決定的」, var讓你在初始化變數時少輸入一些字,編譯器會根據右值來推斷出變數的型別, var只能用於區域性變數的定義,你不能把類的屬性定義成 var,也不能把方法的返回值型別或者是引數型別定義成var

2. dynamic表示「變數的型別是在執行時決定的」,動態語言執行時(dynamic language runtime dlr)是.net framework 4 beta 1中的一組新的api,它提供了對c#中dynamic型別的支援, dynamic告訴編譯器,根本就別理究竟是啥型別,執行時再推斷不遲,dynamic型別並沒有跳過型別校驗,只是延遲到了執行時。如果在執行時,檢測到型別不相容,照樣會丟擲異常。變數,屬性,方法返回值型別及引數型別都可定義為dynamic。

你可能在以下情況下使用dynamic:

1.com物件

2.動態語言(如ironpython,ironruby等)物件

3.反射物件

4.c# 4.0中動態建立的物件

因此,dynamic與var具有截然不同的含義。

C 4 0中dynamic與var的區別

var表示 變數的型別是在編譯時決定的 但是dynamic表示 變數的型別是在執行時決定的 因此,dynamic與var具有截然不同的含義。var讓你在初始化變數時少輸入一些字,編譯器會根據右值來推斷出變數的型別。dynamic更厲害,它告訴編譯器,根本就別理究竟是啥型別,執行時再推斷不遲。var只...

C 4 0 中的dynamic與var的區別

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

C 4 0跨程式集使用 dynamic

今天寫 時偷懶用了dynamic,結果遇到問題,執行時始終無法獲取dynamic物件的屬性。原問題簡化後如下 程式集a包含sampleclass類,有乙個靜態方法,接收乙個dynamic型別引數並將其value屬性輸出。public class sampleclass 程式集b引用程式集a並呼叫ou...