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

本文关键字:构造函数 模型 NET MVC ASP | 更新日期: 2023-09-27 18:27:57

我正在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有什么不同?请忽略属性中的任何错误(如果有的话)或实体中可能的关系,因为我只想澄清在模型中有一个构造函数。谢谢

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

使用您显示的构造函数,Bar.Foos将是Foo类型的空List。

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

这两条线之间的区别是一样的:

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

假设您使用的是C#,另一种不用构造函数初始化它的方法是:

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

根据您是否总是希望初始化属性,如果您有多个构造函数,您认为哪个看起来更好,您对空集合引用与空集合的感觉如何等,您可以选择哪种技术。