其他分享
首页 > 其他分享> > 动态语言运行时(DLR)

动态语言运行时(DLR)

作者:互联网

前言

为什么表达树在声明变量的时候要parameter(typeof(int),”x”);?直接用数据类型int i;不行吗?

表达式树和动态语言运行时(DLR)是什么关系

 

动态语言运行时(DLR)

 

 

动态语言运行时(Dynamic Language Runtime, DLR)是处理动态对象的一种便捷方法。比如,假设您有 XML 或 JSON 格式的数据,其中的成员事先并不知道。DLR 允许您使用自然代码来处理对象和访问成员。

对于 C#,这使您可以处理在编译时不知道其类型的库。动态类型消除了自然 API 代码中的万能字符串。这就开启了像 IronPython 一样位于 CLR 之上的动态语言。

DLR 向 CLR 添加了一组服务,以便更好地支持动态语言。 这些服务包括:

要了解 DLR 和 CLR 是如何结合在一起的,请看下图:

 

 

 

DLR 支持高级多态缓存,因此可以快速执行动态操作。

总结

即我们所知道的调用点缓存来避免每次动态代码被调用时的重新编译。动态分配确保适当的语言结合(Language Binders)能够用于动态调用。

C# 动态类型或许看起来令人望而生畏,但它在强类型系统之上有很多好处。DLR 是所有动态操作发生和与 CLR 交互的地方,类型继承使同时处理这两个类型系统变得容易。在 C# 中,动态和静态编程之间并没有对立,这两种类型系统共同协作,以创造性的方式解决动态问题。

 

https://ittranslator.cn/dotnet/csharp/2021/01/20/working-with-the-dynamic-type-in-csharp.html

https://docs.microsoft.com/zh-cn/dotnet/framework/reflection-and-codedom/dynamic-language-runtime-overview

标签:缓存,语言,C#,DLR,动态,表达式
来源: https://www.cnblogs.com/cdaniu/p/15458410.html