Qual è il design preferito da utilizzare, un costruttore che consente null o due costruttori in cui uno lancia una   ArgumentNullException    su null? 
Due costruttori con lancio di eccezioni
public class Foo
{
    private IDictionary<string, string> _bar;
    public Foo()
    {
        _bar = new Dictionary<string, string>();
    }
    public Foo(IDictionary<string, string> bar)
    {
        if (bar == null) { throw new ArgumentNullException(); }
        _bar = bar;
    }
}
Un costruttore che gestisce null
public class Foo
{
    private IDictionary<string, string> _bar;
    public Foo(IDictionary<string, string> bar = null)
    {
        if (bar == null) {
            _bar = new Dictionary<string, string>();
        } else {
            _bar = bar;
        }
    }
}