是否更好地直接访问resource.resx而不是ResourceManager?

时间:2016-09-23 04:12:06

标签: c# localization

我知道从资源文件中获取字符串的两种方法。

方法1:直接访问。

string str = _NAMESPACE.Properties.Resources.HelloWorld;

方法2:通过ResourceManager。

ResourceManager rm = new ResourceManager("_NAMESPACE.Properties.Resources", Assembly.GetExecutingAssembly());
string str = rm.GetString("HelloWorld");

如果有多个本地化资源文件,这两种方法都会获得正确的本地化字符串。

如果我在字符串键中输入错误,那么在构建时method1会失败。 方法2将失败直到运行时。出于这个原因,我认为method1比method2更好。

我在这个论坛上发现了一些类似的问题。但是,我的问题仍然无法得到很好的答案。

  1. Why is it better to call the ResourceManager class as opposed to loading resources directly by name?

  2. Need to use ResourceManager + GetString to support cultures OR I can just point directly at the resource file?

  3. method1真的更好吗?

1 个答案:

答案 0 :(得分:2)

我相信第一种方法更好,因为当你使用第二种方法时,你正在创建一个新的资源管理器实例,我认为这是一种不必要的内存使用。

编辑*

阅读本文后: https://msdn.microsoft.com/en-us/library/7k989cfy(v=vs.90).aspx

在使用资源类直接访问资源时,似乎它们基本相同,在内部使用资源管理器类来创建对象的实例。