字符串资源缓存在内存中。查看生成的代码"Resources.Designer.cs"
。
它使用 a System.Resources.ResourceManager
,这会缓存字符串。
还要注意这个 ResourceManager 构造函数。它提到您可以更改缓存策略:
此构造函数使用系统提供的 ResourceSet 实现。要使用自定义资源文件格式,您应该从 ResourceSet 类派生,重写 GetDefaultReader 和 GetDefaultWriter 方法,并将该类型传递给 ResourceManager(String, Assembly, Type) 构造函数。使用自定义 ResourceSet 可用于控制资源缓存策略或支持您自己的资源文件格式,但通常不是必需的。
(我的重点)
的文档ResourceSet
明确说:
ResourceSet 类枚举 IResourceReader,加载每个名称和值,并将它们存储在 Hashtable 中
因此,我们确实知道默认情况下您将获得的确切缓存策略。
[编辑] 既然你似乎不相信我!:)
(1) 查看构造函数ResourceManager(string baseName,Assembly assembly)的文档。它指出:
此构造函数使用系统提供的 ResourceSet 实现。
(2) 现在查看ResourceSet 的文档。它指出:
ResourceSet 类枚举 IResourceReader,加载每个名称和值,并将它们存储在 Hashtable 中。
因此,这种缓存行为确实记录在 MSDN 中,此外,您可以通过使用 Resharper 检查实现来验证这是正在发生的事情。