1

我已经阅读了几篇文章,但仍然不明白字符串实习和字符串池在 .NET 中的区别。尤其是这些机制一起应用的情况。你能举个例子解释一下吗?

4

2 回答 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实例 - 它仅适用于:

  • 通过ldstrIL 命令创建的字符串,当代码包含文字时使用 - 即Console.WriteLine("abc")(这"abc"是烘焙到 IL 中并通过加载的文字ldstr
  • 显式使用该string.Intern方法的代码

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

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

于 2013-09-26T09:33:28.250 回答