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;
}
}
}