DynamicKeywordvsObjectDataType这两个变量定义有什么区别?对象变量;动态dVar;表现?内存分配?益处?编译器将变量作为对象输入,编译器将验证所有实例成员是否有效。另一个变量作为动态输入,编译器忽略所有实例成员,并在执行时由DLR调用。它与性能或内存分配无关。动态类型是编译器在某种程度上忽略的静态类型。它使您能够在静态类型语言中使用鸭子类型,这提供了很大的灵活性(尤其是在处理以更动态的语言编写的组件时)。我肯定会推荐阅读这个主题:objectisvalidforall.NETversions。它是所有其他类型继承自的基类型,因此任何类型都可以转换为对象。您不能在声明为对象的变量上动态添加和更改任何内容。声明由编译器静态类型化和检查。动态是.NET4.0的新功能。它允许您动态添加和更改属性和方法,而无需编译器检查它们(因此,如果您写错了,只会在运行时发现)。在内存分配方面-差别不大。两者都是引用类型,分配给它们的任何对象都已经分配了内存来存储它。在性能方面,由于DLR涉及到动态,所以会有一定的开销。你需要测试它。至于其他好处-在处理动态对象/数据(例如XML文件)时,动态确实有助于提高可读性。它还以类似的方式帮助反思。当然,如果要有动态对象,就不能用object而得用dynamicobject。由于使用了所有额外的逻辑,动态关键字还会增加一些执行时间的开销-因此,如果您不需要动态运行时或互操作,并且可以使用对象,您的代码将更加高效。关于动态关键字的更多信息可以在JeffRichter的书中找到:CLRviaC#,3rdEditionSamGentile也发了几篇关于细节的帖子:以上是C#学习教程:动态关键字vs对象数据类型共享如果对你和你需要了解更多的C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
