我预计对象实例化的错误参数会经常发生。
IA应该先检查参数,然后如果有效则创建对象。B)创建由 try/catch 块包围的对象,并让构造函数在无效时抛出异常。
是否有任何理由选择 A 或 B 而不是另一个?
您还有另一个选择是使用无参数构造函数和返回的初始化方法,例如,true
或false
。
这边走:
所以你的班级可能看起来像这样:
class Foo
{
private Bar m_bar;
public Foo()
{
// do nothing here
}
public bool Initialize(Bar bar)
{
if (bar == null) // validation logic here
return false;
m_bar = bar;
return true;
}
}
class Check
{
private Some getsome;
public Some GetSome
{
get
{
return getsome;
}
set
{
if(value != null) //or any other logic you want
getsome = value; //if another logic like value < 10
else //you can throw - throw new ArgumentException - for example
throw new ArgumentNullException("value");
}
}
public Check()
{
}
}
如果你想在构造函数中传递它
public Check(Some s)
{
GetSome = s;
}
请记住这里的构造函数 GetSome 是公共财产,因此您不会错过检查