没有无参数构造函数的对象作为类的属性

Max*_*ich 2 c# syntax constructor properties

所以我有一个名为FixedSizeList的对象,它没有无参数构造函数.

看起来像这样.

class FixedSizeList<T>
{
    public FixedSizeList(Int32 size)
    {
        this.Size = size;
        this._Array = new T[size];
    }
}
Run Code Online (Sandbox Code Playgroud)

现在我想将此对象用作另一个类的属性.

public FixedSizeList<Card> CardList { get; set; }
Run Code Online (Sandbox Code Playgroud)

我注意到我可以使用构造函数声明属性.

public new FixedSizeList<Card> CardList { get; set; }
Run Code Online (Sandbox Code Playgroud)

但问题是FixedSizeList没有实例化(我猜这是显而易见的原因).

所以我不应该为这段代码得到一个编译时错误(类似于"没有为对象声明的无参数构造函数"),或者实际上能够在某种程度上声明属性中的参数?

有人可以解释一下发生了什么以及是否有某种方法来解决这个问题?(显然我可以在第二个对象的构造函数中完成所有这些,但我正在尝试查看其他技术).

Rex*_*x M 9

放在new属性前面并不会导致属性的setter在初始化时被神奇地调用并传递了该类型的新实例(这对于一个很小的关键字来说会产生很大的影响!)

相反,它用于隐藏基类上具有相同名称的成员.

如果您希望您的属性立即返回一个新实例,则需要为其提供一个已初始化的支持:

public FixedSizeList<Card> CardList
{
    get { return _cardList; }
    set { _cardList = value; }
}

private FixedSizeList<Card> _cardList = new FixedSizeList<Card>(99999999);
Run Code Online (Sandbox Code Playgroud)