【问题标题】:Linqpad not resetting static variables between runs unless the code changes除非代码更改,否则 Linqpad 不会在运行之间重置静态变量
【发布时间】:2016-09-29 00:42:05
【问题描述】:

假设我写了这个小 linqpad sn-p 并运行它,我得到了我的期望

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

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

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

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

【问题讨论】:

    标签: linqpad


    【解决方案1】:

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

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

    或

    2) 进入编辑/首选项/高级并将“每次执行时始终使用新鲜进程”设置为 True。每次运行脚本时都会重置

    或

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

    Util.NewProcess = true;
    

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

    【讨论】:

    • 4 年后,#2 变为“每次执行时始终使用新鲜进程”。认为每个人都应该知道。
    • 感谢您指出@AceMark,我更新了答案以反映新的措辞。
    猜你喜欢
    • 2019-09-21
    • 2012-07-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-30
    • 1970-01-01
    相关资源
    最近更新 更多