我正在使用 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 有何不同?请忽略属性中的任何错误(如果有的话)或实体内可能存在的关系,因为我只是想澄清一下在模型中有一个构造函数。谢谢!
最佳答案
使用您展示的构造函数,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>();
}
你选择三种技术中的哪一种取决于你,取决于你是否总是希望属性被初始化,如果你有多个构造函数,你认为哪个看起来更好,你对空集合引用的感觉与空集合等
关于c# - 带构造函数的模型与不带构造函数的模型 ASP.NET MVC,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34425666/