As stated in the comments by Progman. The WithBestIndent() method does not change the current settings object.
Here the adjusted code that gives the desired result:
string yaml;
using (var writer = new StringWriter())
{
var _settings = new EmitterSettings();
Console.WriteLine(_settings.BestIndent);
_settings = _settings.WithBestIndent(4);
var _emitter = new Emitter(writer, _settings);
yamlSerializer.Serialize(_emitter, dictionary);
yaml = writer.ToString();
}
Console.WriteLine(yaml);