2014-03-19 95 views
1

我認爲它是引用類型的...你可以實例化這樣的東西:動態 - 它是引用類型還是值類型?

dynamic d1 = new SomeClass(); // SomeClass extends from System.Dynamic.DynamicObject 
dynamic d2 = new ExpandoObject() ; 
d2.x = 100; 
d2.y = "120"; 
+0

http://msdn.microsoft.com/en-us/library/dd264741.aspx –

+0

動態解析在運行時 – RadioSpace

回答

0
dynamic is Reference Type 

這是我從C# in Depth

讓我們 suppos e我們的產品不存儲在數據庫,XML或內存中。他們可以通過各種網絡服務訪問它們,但只有Python代碼才能訪問它 - 並且代碼使用Python的動態特性來構建結果,而不用聲明具有需要訪問的所有屬性的類型 。相反,它會讓你請求任何財產, 並嘗試解決你在執行時的意思。

答案以動態的形式出現 - 一種新的類型4,C#編譯器 允許您動態使用。如果一個表達式的類型爲dynamic,則可以調用其上的方法 ,訪問屬性,將其作爲方法參數傳遞,等等。大多數正常的綁定過程都是在執行時發生的,而不是編譯時的 時間。您可以隱式地將值從動態轉換爲任何其他類型。

ScriptEngine engine = Python.CreateEngine(); 
ScriptScope scope = engine.ExecuteFile("FindProducts.py"); 
dynamic products = scope.GetVariable("products"); 
foreach (dynamic product in products) 
{ 
Console.WriteLine("{0}: {1}", product.ProductName, product.Price); 
} 

產品和產品被宣佈爲是動態的,所以編譯器很樂意爲 讓我們遍歷產品列表中,並打印出的屬性,即使它 不知道它是否會工作。如果我們輸入了錯別字,則使用product.Name而不是 product.ProductName,例如,它只會在執行時顯示。 這與靜態類型化的C#的其餘部分完全相反。但動態 只鍵入進場時與一類的動態表現都參與: 最C#代碼很可能仍然是整個靜態類型。

+0

此代碼將使用var? – RadioSpace

相關問題