C# 将应用程序设置初始化为默认值的更简洁的方法

C# 将应用程序设置初始化为默认值的更简洁的方法,c#,wpf,application-settings,C#,Wpf,Application Settings,我有一个名为LinearTransformation的类,我希望在执行过程中设置该类的值,以便下次使用它们,然后可以覆盖它们,等等 目前,我正在验证是否存在以前的值,如果没有,我将该值设置为默认值 问题是:我的代码已经变得重复、难看,而且大多数代码只有在新安装第一次在客户机上运行时才有用 有没有更优雅的方法来实现这一点 // This method is run when the app starts private void LoadCalibrações() {

我有一个名为
LinearTransformation
的类,我希望在执行过程中设置该类的值,以便下次使用它们,然后可以覆盖它们,等等

目前,我正在验证是否存在以前的值,如果没有,我将该值设置为默认值

问题是:我的代码已经变得重复、难看,而且大多数代码只有在新安装第一次在客户机上运行时才有用

有没有更优雅的方法来实现这一点

    // This method is run when the app starts
    private void LoadCalibrações()
    {
        if (Properties.Settings.Default.CalibXEsq == null)
        {
            Properties.Settings.Default.CalibXEsq = new TransformaçãoLinear();
        }

        if (Properties.Settings.Default.CalibYEsq == null)
        {
            Properties.Settings.Default.CalibYEsq = new TransformaçãoLinear();
        }

        if (Properties.Settings.Default.CalibXDir == null)
        {
            Properties.Settings.Default.CalibXDir = new TransformaçãoLinear();
        }

        if (Properties.Settings.Default.CalibYDir == null)
        {
            Properties.Settings.Default.CalibYDir = new TransformaçãoLinear();
        }

        Properties.Settings.Default.Save();


        _calibrações = new[]
        {
            Properties.Settings.Default.CalibXEsq,
            Properties.Settings.Default.CalibYEsq,
            Properties.Settings.Default.CalibXDir,
            Properties.Settings.Default.CalibYDir
        };
    }

如果您只需要填充数组

var settings = Properties.Settings.Default;
_calibrações = new[]
{
    settings.CalibXEsq ?? new TransformaçãoLinear(),
    settings.CalibYEsq ?? new TransformaçãoLinear(),
    settings.CalibXDir ?? new TransformaçãoLinear(),
    settings.CalibYDir ?? new TransformaçãoLinear(),
};
否则

var settings = Properties.Settings.Default;
_calibrações = new[]
{
    settings.CalibXEsq ?? (settings.CalibXEsq = new TransformaçãoLinear()),
    settings.CalibYEsq ?? (settings.CalibYEsq = new TransformaçãoLinear()),
    settings.CalibXDir ?? (settings.CalibXDir = new TransformaçãoLinear()),
    settings.CalibYDir ?? (settings.CalibYDir = new TransformaçãoLinear()),
};

您可以这样做,并在程序集中嵌入一个版本的数据,如果文件丢失,则使用该嵌入资源。第二种形式很好!你能解释一下为什么赋值是从括号内“返回”赋值吗?这叫什么?好吧,没关系: