清除Linqpad中所有的字符串缓存?

3

我可以如何在linqpad中清除所有的内部字符串?

看这个例子:

//var asd="asd";
string s = new string(new  []{'a','s','d'});
Console.WriteLine (string.IsInterned(s));

它总是返回null,这很好。

但是一旦我取消注释第一行,即使我再次注释它,它总是会产生"asd"

看起来唯一的解决办法是关闭程序并重新启动。

p.s.:在Visual Studio中,它始终返回所需的结果(控制台模式)。


这个SO线程可能会提供一些原因,为什么你在清除它时遇到问题: https://dev59.com/snE95IYBdhLWcg3wUMLW为了让您在控制台应用程序中获得所需的结果,难道不必取消注释该行并重新构建吗?这与卸载和重新加载LINQPad是相同的..对吗? - Hardrada
1个回答

3

LINQPad在运行之间保留AppDomain,因此所有静态内容都将保留在内存中。您可以通过转到编辑 > 首选项 > 高级 > 始终使用新的应用程序域来更改此行为。

虽然上述内容是真实的,但似乎字符串插入是在进程级别上执行的(请参见此处)。因此,除了重新启动之外,没有其他方法可以重置它。


2
“取消所有线程并重置”(Shift+Ctrl+F5)是清除AppDomain的另一种方法。但正如Eli所说,内部处理发生在进程级别,因此在这种情况下不会产生任何影响。 - Joe Albahari

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接