除非代码更改,否则 Linqpad 不会在运行之间重置静态变量

Linqpad not resetting static variables between runs unless the code changes

假设我写了这个 linqpad 小片段 运行 它,我得到了我期望的结果

但是当我再次按 F5 时,列表中将有两个项目:

我没想到它会这样做,也不知道为什么会这样。

每次我 运行 列表都会增加,除非我对代码做些什么,甚至添加评论。然后它将重置为一个条目。

这是设计使然吗?如果是,为什么? 我在 5.08.01

这是设计使然。它不会重置应用程序域,除非您执行以下操作之一:

1) 按需使用Ctrl+Shift+F5重置

2) 进入 Edit/Preferences/Advanced 并将 "Always use Fresh Process per execution" 设置为 True。这将在您每次 运行 脚本

时重置

3) 将以下代码放入您的查询中(这会告诉 LINQPad 下次您使用新域 运行):

Util.NewProcess = true;

至于为什么,可能有很多好处,但我想说性能是主要的。您可以将昂贵查询的结果放在静态变量中,并且第一次只 运行 它。