dynamic a = 4;
dynamic仅在编译时才是一种类型。然后 a 在编译时是动态的,但在执行时间则不是。当我说
时发生了什么a = "pp";
执行中的 a 更改类型(非常奇怪),或者使用字符串类型创建新变量a。
答案 0 :(得分:2)
动态a = 4;
当我说
时发生了什么a =" pp&#34 ;;
字符串值"pp"
已分配给变量a
。
执行中
a
更改的类型(非常奇怪)
True(从技术角度来说,a
引用的类型在运行时发生了变化),但它并不奇怪 - 它的工作方式相同你使用'对象':
object a = 4;
Console.WriteLine(a.GetType().Name); // Int32
a = "pp";
Console.WriteLine(a.GetType().Name); // string
变量 a
可以包含任何类型,a
实际上引用可以在运行时更改。< / p>
dynamic
非常类似于object
,因为它可以引用任何类型的对象。区别在于dynamic
变量上的 operations 在编译时未被检查;它们在运行时被推迟和绑定。所以这是完全合法的:
dynamic a = 4;
a = a + 1;
a = "pp";
Console.WriteLine(a.Substring(1,1));
由于object
未定义object
运算符或+
方法,因此Substring
无法进行转换,因此无法执行此操作。