【问题标题】:What is the meaning of dynamic type动态类型是什么意思
【发布时间】:2015-01-03 06:35:13
【问题描述】:
dynamic a = 4;

dynamic 仅在编译时是一种类型。那么 a 在编译时是动态的,但在执行时不是。我说的时候发生了什么

a = "pp";

执行中a的类型发生变化(很奇怪),或者它创建了一个字符串类型的新变量a。

【问题讨论】:

标签: c# .net dynamic


【解决方案1】:

动态 a = 4;

当我说的时候发生了什么

a = "pp";

字符串值"pp"被赋值给变量a

执行中a的类型变化(很奇怪)

True(从技术上讲,areferencestype 在运行时会发生变化),但这并不奇怪 - 如果您使用“object”,它的工作方式相同:

object a = 4;
Console.WriteLine(a.GetType().Name);  // Int32
a = "pp";
Console.WriteLine(a.GetType().Name);  // string

变量a可以保存any类型,a实际上references可以在运行时改变。

dynamic 的工作方式与object 非常相似,因为它可以引用任何类型的对象。不同之处在于dynamic 变量上的操作 在编译时不会被检查;它们在运行时被延迟和绑定。所以这是完全合法的:

dynamic a = 4;
a = a + 1;
a = "pp";
Console.WriteLine(a.Substring(1,1));

object 不进行强制转换就无法做到这一点,因为 object 没有定义 + 运算符或 Substring 方法。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-02-20
    • 1970-01-01
    • 2013-12-29
    • 2016-09-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多