除非代码更改,否则 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;
至于为什么,可能有很多好处,但我想说性能是主要的。您可以将昂贵查询的结果放在静态变量中,并且第一次只 运行 它。
假设我写了这个 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;
至于为什么,可能有很多好处,但我想说性能是主要的。您可以将昂贵查询的结果放在静态变量中,并且第一次只 运行 它。