所以我有一个名为 FixedSizeList 的对象,它没有无参数构造函数。
看起来像这样。
class FixedSizeList<T>
{
public FixedSizeList(Int32 size)
{
this.Size = size;
this._Array = new T[size];
}
}
现在我想将此对象用作另一个类的属性。
public FixedSizeList<Card> CardList { get; set; }
我注意到我实际上可以使用构造函数声明该属性。
public new FixedSizeList<Card> CardList { get; set; }
但问题是 FixedSizeList 没有实例化(我想原因很明显)。
所以我不应该为这段代码得到一个编译时错误(类似于“没有为对象声明无参数构造函数”)或者实际上能够以某种方式在属性中声明参数吗?
有人可以解释一下发生了什么吗,是否有办法解决这个问题?(显然我可以在第二个对象的构造函数中完成所有这些,但我正在尝试研究其他技术)。
最佳答案
将 new
放在属性前面不会导致属性的 setter 在初始化时被神奇地调用并传递该类型的新实例(这对小小的关键字!)
相反,它习惯于hide a member with the same name on a base class .
如果你想让你的属性立即返回一个新的实例,你需要给它一个初始化的支持:
public FixedSizeList<Card> CardList
{
get { return _cardList; }
set { _cardList = value; }
}
private FixedSizeList<Card> _cardList = new FixedSizeList<Card>(99999999);
关于c# - 没有无参数构造函数的对象作为类的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5214785/