动态类型的含义是什么
本文关键字:是什么 类型 动态 | 更新日期: 2023-09-27 18:29:29
dynamic a = 4;
动态是仅在编译时出现的类型。那么 a 在编译时是动态的,但在执行时间里不是。当我说时发生了什么
a = "pp";
执行更改的类型(非常奇怪(,或者它创建一个具有字符串类型的新变量 a。
字符串动态 a = 4;
当我说时发生了什么
a = "pp";
值"pp"
分配给变量 a
。
执行中
a
变化的类型(非常奇怪(
没错(从技术上讲,a
引用的类型在运行时会发生变化(,但这并不奇怪 - 如果您使用"对象",它的工作方式相同:
object a = 4;
Console.WriteLine(a.GetType().Name); // Int32
a = "pp";
Console.WriteLine(a.GetType().Name); // string
变量a
可以保存任何类型,实际引用的内容a
运行时可以更改。
dynamic
的工作方式与object
非常相似,因为它可以引用任何类型的对象。 不同之处在于,在编译时不检查对dynamic
变量的操作;它们在运行时延迟和绑定。 所以这是完全合法的:
dynamic a = 4;
a = a + 1;
a = "pp";
Console.WriteLine(a.Substring(1,1));
如果不强制转换,则无法使用object
执行此操作,因为object
没有定义+
运算符或Substring
方法。