文字列リソースはメモリにキャッシュされます。で生成されたコードを見てください"Resources.Designer.cs"
。
を使用し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 を使用して実装を検査することで、これが起こっていることを確認できます。