我已经阅读了几篇文章,但仍然没有得到字符串实习和字符串池在.NET中的区别。特别是,这些机制一起应用的情况。你能给出一个解释的例子吗?
答案 0 :(得分:1)
没有区别,它们只是描述同一事物的替代术语。
考虑以下声明from here:
Intern方法使用实习池来搜索等于str。
值的字符串
请注意使用短语“intern pool”,这表示两个单独的术语如何出现相同的含义
答案 1 :(得分:1)
字符串实习是CLI内置的一项功能,有助于在看到相同的字符序列时使用相同的字符串实例。这不适用于所有string
个实例 - 它仅适用于:
ldstr
IL命令创建的字符串,当代码包含文字时使用该命令 - 即Console.WriteLine("abc")
(此处"abc"
是通过{烘焙到IL并通过{加载的文字} {1}})ldstr
方法的代码没有上下文很难说,但我强烈怀疑“字符串池”只是用作“实习”的同义词。
请注意,代码也可以使用私有池/实习集,例如使用string.Intern
。这可能对重用特定范围中的字符串 非常有用,但不会使应用程序范围的实习池饱和。任何此类设备都将是定制的和特定于应用的。