struct是一种在内存中存储程序设置的好方法吗?

时间:2013-12-31 15:56:20

标签: c# .net

我正在编写应用程序,需要在应用程序运行时存储程序设置(输入目录,输出目录等)。我希望程序能够加载和使用(基于选项)生产环境和测试环境。

我会像这样设置结构:

Class AppSettings
{
    struct prodAppSettings
    {
        var settingName;
        var settingName2;
        var settingName3;
    }

    struct testAppSettings
    {
        var settingName;
        var settingName2;
        var settingName3;
    }
}

然后,在我的主课程中,根据用户想要的环境选项加载适当的设置。

AppSettings类将处理设置的加载(应用程序将与Web服务连接以进行设置,或者在网络连接不可用时,可以使用存储上次已知良好设置的XML文件)。我不太熟悉结构,我想熟悉它们,所以这个项目可能是一个很好的地方。

修改

澄清了一些事情。

3 个答案:

答案 0 :(得分:10)

不,基本上。使用class。您需要使用struct的次数 消失 小(除非您正在为XNA等编写) - 这不是其中之一。如果你在这里使用struct,你可能会遇到至少两个问题:

  • 在堆栈上传递真正的struct(而不仅仅是参考)
  • struct
  • 的内部副本丢失了更新

很可能是第三种(撕裂的值,通过多线程代码)

答案 1 :(得分:6)

你已经上课了:

class AppSettings

为什么不使用它呢?您可以使用嵌套类在内部进一步构建事物:

class AppSettings
{
    public SettingsGroup SomeGroupOfSettings { get; set; }
    // other settings

    public class SettingsGroup
    {
        // properties which are logically grouped together
    }
}

对我来说,在这里应用(或者至少可以)更多的逻辑,使得课程越来越合适,这似乎是合理的。

结构往往适用于不可变数据的小分组。例如,通用结构将是两个坐标以形成点。如果任一坐标发生变化,那么这是一个全新的观点,也可以为它创建一个新的结构实例。像这样的更大和可能更复杂的东西真的属于一个类,它代表更多的“对象”,而不是“不可变数据点的分组。”

答案 2 :(得分:0)

在这种情况下,管理设置的经典方法是内置Settings class