我已经阅读了几篇文章,但仍然不明白字符串实习和字符串池在 .NET 中的区别。尤其是这些机制一起应用的情况。你能举个例子解释一下吗?
问问题
290 次
2 回答
1
There is no difference, they are just alternate terms for describing the same thing.
Consider the following statement from here:
The Intern method uses the intern pool to search for a string equal to the value of str.
Notice the use of the phrase "intern pool", this indicates how the two separate terms may have arisen for the same meaning
于 2013-09-26T09:32:41.453 回答
1
字符串实习是 CLI 中内置的一项功能,可在看到相同的字符序列时促进使用相同的字符串实例。这不适用于所有string
实例 - 它仅适用于:
- 通过
ldstr
IL 命令创建的字符串,当代码包含文字时使用 - 即Console.WriteLine("abc")
(这"abc"
是烘焙到 IL 中并通过加载的文字ldstr
) - 显式使用该
string.Intern
方法的代码
没有上下文很难说,但我强烈怀疑“字符串池”只是被用作“实习”的同义词。
请注意,代码也可以使用私有池/实习集,例如使用Dictionary<string,string>
. 这对于在特定范围内重用字符串可能很有用,但不会使应用程序范围的实习生池饱和。任何此类设备都将是定制的和特定于应用的。
于 2013-09-26T09:33:28.250 回答