加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 动态与Object相同

发布时间:2020-12-16 01:40:25 所属栏目:百科 来源:网络整理
导读:在“CLR via C#”一书中提到动态关键字对应的FCL类型是System.Object.请澄清一下. 解决方法 从C#的角度来看,它不是一回事……但是在编译的代码中,声明为动态类型的变量通常(可能总是)与CLR字段或对象类型的局部变量对应. C#编译器负责确保使用该值的任何源代
在“CLR via C#”一书中提到动态关键字对应的FCL类型是System.Object.请澄清一下.

解决方法

从C#的角度来看,它不是一回事……但是在编译的代码中,声明为动态类型的变量通常(可能总是)与CLR字段或对象类型的局部变量对应.

C#编译器负责确保使用该值的任何源代码都应用了动态行为. object只是表示用于存储的编译器.它还适用于适用的[Dynamic]属性,以便其他代码知道它是动态处理的.

例如,考虑一下:

public class Foo
{
    public dynamic someField;
}

我相信将编译成IL相当于:

public class Foo
{
    [Dynamic]
    public object someField;
}

现在,如果你写:

Foo foo = new Foo();
foo.someField = "hello";
Console.WriteLine(foo.someField.Length);

编译器使用该属性来知道foo.someField是动态的,因此应该动态绑定Length属性.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读