我有很多全局只读字符串(大约100个),我在我的应用程序中使用它永远不会改变。我一直在尝试考虑易于编码且对性能没有太大影响的最佳解决方案。我需要在整个应用程序中使用字符串,如下面的示例所示,其中Relationship只是一个类别,其中值被分组,Alternate是字符串值本身。
Relationship.Alternate
我想过用静态只读字段创建静态类,用const字段创建静态类,实现Singleton模式,甚至在辅助方法中创建和解析枚举。任何人都可以就解决这个问题的最佳方法提供一些好的建议。
答案 0 :(得分:8)
如何使用resource files?
它们是打字的,可以在运行时从代码中轻松访问,无需重新编译即可轻松编辑,并支持任何字符串内容(即不像枚举,只支持类似标识符的字符串)。
例如,您可以将名为GlobalStrings.resx
的资源文件添加到C#项目中,然后将名为Relationship_Alternate
的字符串添加到该文件中。您可以为该字符串键入任何所需的值。在代码中,您将访问字符串值:
GlobalStrings.Relationship_Alternate
由于这些是在编译时验证的标识符,因此可以保证所有字符串在运行时都能成功加载。
希望它有所帮助。
答案 1 :(得分:2)
为什么不把它们放在枚举中,这样可以使内存高效,可读性更低,更容易出错
答案 2 :(得分:1)
如果要在编译时设置它们,可以尝试将它们放在appSettings中(在web.config或app.config中)。这通常适用于连接字符串等。如果它们将在运行时设置,取决于其他一些值,您可以使用静态类&静态只读字段
编辑:如果您想要强类型,也可以使用设置文件。见MSDN article
答案 3 :(得分:1)
您应该考虑使用资源文件。请参阅此MSDN中的CodeProject article或解决方案B.