.NET中字符串实习和字符串池之间的区别是什么?

时间:2013-09-26 09:25:36

标签: .net string clr

我已经阅读了几篇文章,但仍然没有得到字符串实习和字符串池在.NET中的区别。特别是,这些机制一起应用的情况。你能给出一个解释的例子吗?

2 个答案:

答案 0 :(得分:1)

没有区别,它们只是描述同一事物的替代术语。

考虑以下声明from here

  

Intern方法使用实习池来搜索等于str。

值的字符串

请注意使用短语“intern pool”,这表示两个单独的术语如何出现相同的含义

答案 1 :(得分:1)

字符串实习是CLI内置的一项功能,有助于在看到相同的字符序列时使用相同的字符串实例。这不适用于所有string个实例 - 它仅适用于:

  • 通过ldstr IL命令创建的字符串,当代码包含文字时使用该命令 - 即Console.WriteLine("abc")(此处"abc"是通过{烘焙到IL并通过{加载的文字} {1}})
  • 明确使用ldstr方法的代码

没有上下文很难说,但我强烈怀疑“字符串池”只是用作“实习”的同义词。

请注意,代码也可以使用私有池/实习集,例如使用string.Intern。这可能对重用特定范围中的字符串 非常有用,但不会使应用程序范围的实习池饱和。任何此类设备都将是定制的和特定于应用的。