-3
dynamic a = 4;
动态是仅在编译时才有的类型。然后a是一个动态编译时间,但在执行时间不是。发生了什么事,当我说动态类型的含义是什么
a = "pp";
类型的在excecution(很奇怪)一变化,或创建一个新的变量与字符串类型。
dynamic a = 4;
动态是仅在编译时才有的类型。然后a是一个动态编译时间,但在执行时间不是。发生了什么事,当我说动态类型的含义是什么
a = "pp";
类型的在excecution(很奇怪)一变化,或创建一个新的变量与字符串类型。
动态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
方法。
http://msdn.microsoft.com/en-us/library/dd264741.aspx – 2014-11-06 16:45:53