查看带有列表

时间:2016-04-14 08:43:29

标签: asp.net asp.net-mvc

如果我用这样的List构建一个View Model:

public class ProductsViewModel
{
    public bool ProductBool { get; set; }
    public string ProductString { get; set; }
    public int ProductInteger { get; set; }
    public List<Product> ProductList { get; set; }
}

它工作正常。但我已经看到构造类似模型的代码如下:

public class ProductsViewModel
{
    public bool ProductBool { get; set; }
    public string ProductString { get; set; }
    public int ProductInteger { get; set; }
    public List<Product> ProductList { get; set; }

    public ProductsViewModel()
    {
        this.ProductList = new List<Product>();
    }
}

额外的构造元素实际上做了什么?

1 个答案:

答案 0 :(得分:2)

使用语句

创建ProductsViewModel类的对象时
ProductsViewModel obj = new ProductsViewModel();

它会自动实例化ProductList。 obj中的值现在是:

ProductBool = false;ProductString = null;ProductInteger = 0;ProductList = new ProductList();

如果你写obj.ProductList.Count(),它将给出0

如果删除此构造函数或构造函数内的语句,并创建上面创建的Class ProductsViewModel对象。 obj中的值为:

ProductBool = false;ProductString = null;ProductInteger = 0;ProductList =null

如果你写obj.ProductList.Count(),它会给出

  

NullReference的例外