Folder browser dialog to remember recent folder. Which method is better?
Extensions are good when you want to re-use this logic in multiple places. As it seems to be the case, i would go with the second method. Generally it is a good practice to avoid code duplication where possible.

The only possible issue i see is that those two methods have different behaviours: first method saves settings after checking the length, while the second method does this before checking. I'm not sure if that is important (can you even get an empty string from this dialog if you press "ok"?).

EDIT:

You can also overload this static method to use lambdas. For example:

public static class FolderBrowserDialogExtensions
{
    public static DialogResult ShowDialog(this FolderBrowserDialog dialog, ApplicationSettingsBase settings, string key)
    {
        return dialog.ShowDialog(settings[key].ToString(), 
                                 path =&gt; {
                                             settings[key] = dialog.SelectedPath;
                                             settings.Save();
                                         });
    }

    public static DialogResult ShowDialog(this FolderBrowserDialog dialog, string defaultValue, Action&lt;string&gt; onAccept)
    {
        dialog.SelectedPath = defaultValue;
        var result = dialog.ShowDialog();
        if (result == DialogResult.OK)
        {
            // check for null, if needed
            onAccept(dialog.SelectedPath);
        }
        return result;
    }
}


Then you can stick to your Settings class:

dialog.ShowDialog(Settings.RecentFolder, path =&gt; Settings.RecentFolder = path);