有没有一种方法可以自动实例化一个对象而无需在构造函数中实例化它?
实际上,我有这样的东西:
public List<Object> Products { get; set; }
public MyClass()
{
this.Products = new List<Object>();
}
但是,我想直接实例化我的列表,而不用在我的类的构造函数中指定类似的东西:
public List<Object> Products = new List<Object>(); { get; set; }
有什么技巧可以做到这一点吗?
我想您是在问是否可以为自动实现的属性赋予初始值。这个问题的答案是“否”。
不过您可以编写一个手动属性:
private List<Product> products = new List<Product>();
public List<Product> Products
{
get { return products; }
set { this.products = value; }
}
你真的需要二传手吗?您是否需要客户端能够用另一个列表替换变量值?你可能会发现你只需要一个只读属性,在这种情况下你可以这样写:
private readonly List<Product> products = new List<Product>();
public IList<Product> Products { get { return products; } }
请注意,在这里您仍然可以使用集合初始值设定项,例如
Foo foo = new Foo
{
Products = { new Product("foo"), new Product("bar") }
};