实例化一个字段变量

时间:2016-10-21 08:21:36

标签: c#

这是一段代码

public class CartItemList
{
    //internal list of items and the constructor that instantiates it
    private List<CartItem> **cartItems**;
    public CartItemList() {
        cartItems = new List<CartItem>();

我想问一下,在CartItemList()构造函数实例化它之前是否可以启动 cartItems 列表构造函数?然后只使用CartItemList的默认构造函数?

像这样:

public class CartItemList
{
    //internal list of items and the constructor that instantiates it
    private List<CartItem> cartItems= new List<CartItem>();
    public CartItemList() 

2 个答案:

答案 0 :(得分:2)

是的,class(引用类型)可以有这样的字段初始值设定项。字段初始值设定项在实例构造函数之前运行。

如果(并且仅当)您自己不创作任何实例构造函数(并且该类不是静态的),C#编译器将为您创建一个。它将是public(如果是protected类,则为abstract,并且将采用零参数。

如果要将字段分配给初始化程序和实例构造函数,则可以考虑将该字段标记为readonly。您仍然可以AddRemoveClearList<>,但实例将在构造函数退出后修复。

答案 1 :(得分:0)

是的,你可以按照你在代码中显示的方式执行此操作,它将在我相信的构造函数之前运行。

我会尽可能地说这应该是推荐的方式,因为有时人们会忘记在构造函数中初始化字段变量,但只有在情况需要时才会这样。