65.9K
CodeProject 正在变化。 阅读更多。
Home

DLR:表达式与“Hello World”应用程序

emptyStarIconemptyStarIconemptyStarIconemptyStarIconemptyStarIcon

0/5 (0投票)

2013 年 10 月 11 日

CPOL

1分钟阅读

viewsIcon

6756

DLR 表达式是 DLR 的核心。它是一个独立的功能,您可以在不涉及 DLR 其余部分的情况下使用。让我们看看

DLR 表达式是 DLR 的核心。它是一个独立的功能,您可以在不涉及 DLR 其余部分的情况下使用。

首先,让我们了解一下什么是 DLR 表达式,然后再进入示例。DLR 表达式很像一种编程语言。它具有循环表达式、赋值表达式和方法调用表达式等构造,这些构造通常在其他语言中可以看到。例如,C# 中的 Hello World 程序如下所示

Console.Writeline(“Hello World”);

DLR 表达式中的等效代码如下所示

MethodInfo Console_WriteLine_MethodInfo =
typeof(Console).GetMethod(“WriteLine”,
new Type[] { typeof(string) });

Expression CallExpression =
Expression.Call(null,
Console_WriteLine_MethodInfo,
Expression.Constant(“Hello World”));

Action CallDelegate =
Expression.Lambda<Action>(CallExpression).Compile();

CallDelegate();

那么,DLR 表达式与普通编程语言有什么区别,除了 DLR 表达式中的代码看起来更加冗长之外? 有三个关键的区别

  • 代码即数据,数据即代码——用 DLR 表达式表达的代码是数据,可以更轻松地分析和处理。
  • 多种语言的共同基础——就像 CLR 的 IL 指令一样,DLR 表达式充当多种语言的共同基础。
  • 没有具体的语法,只有抽象语法——DLR 表达式仅定义抽象语法,没有具体的语法。但是,它支持序列化,我们可以使用它将抽象语法序列化为具体语法,或者相反,将具体语法反序列化为抽象语法。
© . All rights reserved.