2014-11-06 62 views
-3
dynamic a = 4; 

動態是僅在編譯時纔有的類型。然後a是一個動態編譯時間,但在執行時間不是。發生了什麼事,當我說動態類型的含義是什麼

a = "pp"; 

類型的在excecution(很奇怪)一變化,或創建一個新的變量與字符串類型。

+1

http://msdn.microsoft.com/en-us/library/dd264741.aspx – 2014-11-06 16:45:53

回答

2

動態a = 4;

我說什麼時發生了什麼

a =「pp」;

將字符串值"pp"分配給變量a

的類型excecution a變化(很奇怪)

真實的,但它並不奇怪(技術上什麼a引用在運行時變化型) - 它的工作原理相同

object a = 4; 
Console.WriteLine(a.GetType().Name); // Int32 
a = "pp"; 
Console.WriteLine(a.GetType().Name); // string 

變量:如果您使用 '對象' 的方式可以容納任何類型,什麼a實際上參考可以在運行時改變。

dynamic非常類似於object,因爲它可以引用任何類型的對象。不同的是操作dynamic變量在編譯時不檢查;它們在運行時被延遲和綁定。因此,這是完全合法的:

dynamic a = 4; 
a = a + 1; 
a = "pp"; 
Console.WriteLine(a.Substring(1,1)); 

你不能做到這一點與object沒有因爲object鑄造沒有定義+運營商或Substring方法。