我認爲它是引用類型的...你可以實例化這樣的東西:動態 - 它是引用類型還是值類型?
dynamic d1 = new SomeClass(); // SomeClass extends from System.Dynamic.DynamicObject
dynamic d2 = new ExpandoObject() ;
d2.x = 100;
d2.y = "120";
我認爲它是引用類型的...你可以實例化這樣的東西:動態 - 它是引用類型還是值類型?
dynamic d1 = new SomeClass(); // SomeClass extends from System.Dynamic.DynamicObject
dynamic d2 = new ExpandoObject() ;
d2.x = 100;
d2.y = "120";
dynamic
似乎是一個引用類型,如MSDN詳述這裏:
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#代碼很可能仍然是整個靜態類型。
此代碼將使用var? – RadioSpace
http://msdn.microsoft.com/en-us/library/dd264741.aspx –
動態解析在運行時 – RadioSpace