static void Main(string[] args)
    {
        // Make sure we don't overwrite the previous run's settings.
        if (String.IsNullOrEmpty(Settings.Default.SettingsObjects))
        {
            // Create the initial settings.
            var list = new SettingsList <SettingsObject> {
                new SettingsObject {
                    Property = "alpha"
                },
                new SettingsObject {
                    Property = "beta"
                }
            };
            Console.WriteLine("settingsObject.Property[0] is {0}", list[0].Property);
            //Save initial values to Settings
            Settings.Default.SettingsObjects = list.ToBase64();
            Settings.Default.Save();
            // Change a property
            list[0].Property = "theta";
            // This is where you went wrong, settings will not be persisted at this point
            // because you have only modified the in memory list.

            // You need to set the property on settings again to persist the value.
            Settings.Default.SettingsObjects = list.ToBase64();
            Settings.Default.Save();
        }
        // pull that property back out & make sure it saved.
        var deserialized = SettingsList <SettingsObject> .FromBase64(Settings.Default.SettingsObjects);

        Console.WriteLine("settingsObject.Property[0] is {0}", deserialized[0].Property);
        Console.WriteLine("Finished! Press any key to continue.");
        Console.ReadKey();
    }