具有构造函数的模型与没有构造函数ASP.NET MVC的模型

时间:2015-12-22 22:42:35

标签: c# asp.net-mvc asp.net-mvc-4

我正在ASP.NET MVC开展一个项目。我一直在寻找关于这个主题的一些学习资源,而且我遇到了一个我正在寻找澄清的场景。假设:

public class Foo
{
    public int Id { get; set; }
    public string FooName { get; set; }
    public virtual Bar Bar { get; set; }
}

public class Bar
{
    public Bar()
    {
        this.Foos = new List<Foo>;
    }

    public int Id { get; set; }
    public string BarDesc { get; set; }
    public virtual List<Foo> Foos { get; set; }
}

我的意思是,它与没有构造函数的模型Bar有什么不同?请忽略实体中属性(如果有)或可能的关系中的任何错误,因为我只想澄清在模型中有构造函数。谢谢!

1 个答案:

答案 0 :(得分:8)

使用您显示的构造函数,Bar.Foos将是一个类型为Foo的空列表。

如果没有构造函数,Bar.Foos将为null(除非您在其他位置初始化它)。

这两行之间的区别是相同的:

List<SomeType> test1 = null;
List<SomeType> test2 = new List<SomeType>();

假设你正在使用C#6,另一种在没有构造函数的情况下初始化它的方法是:

public class Bar
{
    public int Id { get; set; }
    public string BarDesc { get; set; }
    public virtual List<Foo> Foos { get; set; } = new List<Foo>();
}

您选择的3种技术中的哪一种取决于您是否总是希望初始化属性,如果您有多个构造函数,您认为看起来更好,您对null集合引用的感觉如何空集等。