我目前正在研究一些旧代码,我开始怀疑,这两者之间到底有什么区别吗
public class XmlExport : IXmlExport
{
private readonly IJobRepository jobRepository = new JobRepository();
}
和
public class XmlExport : IXmlExport
{
private readonly IJobRepository jobRepository;
public XmlExport()
{
jobRepository = new JobRepository();
}
}
在构造函数内部初始化有什么好处吗?还是只是相同的代码?
问题已有答案here ,我只想添加我的 2p。
如果在你的例子中
public class XmlExport : IXmlExport
{
private readonly IJobRepository jobRepository = new JobRepository();
}
JobRepository
构造函数抛出异常,你会得到
the application is in break mode.
但是,如果 jobRepository
在构造函数中像这样初始化
public class XmlExport : IXmlExport
{
private readonly IJobRepository jobRepository;
public XmlExport()
{
jobRepository = new JobRepository();
}
}
您将获得确切的异常、堆栈跟踪等。这也是您可以实际捕获异常的唯一位置。
因此,在我看来还是初始化比较好
- 简单对象(
int
、bool
,您知道不会抛出的类型)
- 可能会在构造函数中抛出的对象。