动态类型是什么意思

时间:2014-11-06 16:44:31

标签: c# .net dynamic

dynamic a = 4;

dynamic仅在编译时才是一种类型。然后 a 在编译时是动态的,但在执行时间则不是。当我说

时发生了什么
a = "pp";

执行中的 a 更改类型(非常奇怪),或者使用字符串类型创建新变量a。

1 个答案:

答案 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无法进行转换,因此无法执行此操作。