c# 初始化程序与构造函数

标签 c#

<分区>

我目前正在研究一些旧代码,我开始怀疑,这两者之间到底有什么区别吗

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

您将获得确切的异常、堆栈跟踪等。这也是您可以实际捕获异常的唯一位置。


因此,在我看来还是初始化比较好

  • 简单对象(intbool,您知道不会抛出的类型)
  • 可能会在构造函数中抛出的对象。

关于c# 初始化程序与构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49424619/

相关文章:

c# - 如何获取和设置图像的属性项

c# - 为 INSERT 方法添加更多文本框

c# - 为什么 TextWriter.Write(char) 不是抽象的?

c# - 如何将 Java 枚举转换为 C#?

c# - 组合Elasticsearch中的字段

c# - "Deconstruct assignment requires an expression with a type on the right hand side"

c# - 我如何使用 Wiimote 的加速度计来计算重力?

c# - jquery 调用页面方法失败

c# - Oracle 和 SQL Server 数据集比较

C# Sql LocalDB 应用程序性能缓慢