2014-11-06 65 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方法。